There are also some tools that can create the maps automagically.
One of them is CrazyBump. Its not free, but also not too expensive. If you use it a lot, the price is quite fair.
Then there is the Substance Suite, expecially the bitmap2material tool. AFAIK does the same as CrazyBump, more options, less intuitive to use (which is why I only ever used it to generate AO).
Now, before you get your hopes up: None of these tools will do 100% of the work if you hope for top notch result. If you input any photo into CrazyBump without optimizing the pic while snapping it for easy readability by the algorithm (read: enough contrast, making sure that the details on the picture are well visible and actually good for conversion to a normal map), and then adjust the pic later in photoshop to make sure the lighting is consistent and yadda yadda, your result will not be too good. Shadows for example should be avoided, so no photo snapped in bright sunlight (but you will struggle modelling over a photo with lots of shadows in it yourself too, so that is hardly the algorithms fault).
Of course, the algorithm works best with a heightmap-like image. My personal use of CrazyBump is mostly for conversion of height to normal maps. I like to create material normal maps as heightmaps in PS, this is easier to understand for me than drawing normal maps directly, and for some things way quicker than modelling.
CrazyBump never disappoints if you input a heightmap, and generate a normal map from it. So if you manage to make your photosnaps act a little bit like a heightmap (parts closer to the camera brighter than parts further from it, you will most probably get very good results. Of course that will not be easy without wuite elaborate lighting and some PS wizardry. But it is something to keep in mind.
As for less expensive tools... I haven't tried any of these, but listed here for completness:
"In GIMP you can do filter>map>normalmap" - taken from a blenderartist discussion on the subject.
InsaneBump - Gimp Script that should do some of the things CrazyBump can do
ShaderMap
There are most probably a ton of other tools. You could try xNormals, it does almost all the weird conversions you could think of. Not the easiest tool to use, but free to use.
There is nDo, a Quixel tool that allows you to paint normals directly in PS. As it needs PS (its a PS plugin), and comes in a not-so-cheap bundle with DDO, its not the most cost effective option though. If you do not need DDO and have a PS license already, I would look elsewhere.