How can I make my photos automatically geo-tagged? Is there a way I can make photos taken by Camera be automatically  and reliably geo-tagged, so that the location is recognised when I upload them to Flickr?

I have 'GPS' enabled in the camera, but it seems that if the GPS is not enabled or not 'ready', it isn't recorded (when I check the photo's details in Gallery, the location is 'Unknown'). 

Alternatively, is there a way I can geo-tag a photo after I've taken it? (edit: made this a separate question)

If it's relevant, my phone is a Samsung Galaxy S.
As long as you have GPS switched on on your phone (on a Galaxy S the easiest way to do this is from the buttons that appear when you pull the notification bar down from the top of the screen) and have GPS switched on in the camera, you should see the "satellite receiver" GPS icon appear and start flashing when you open the camera app. As long as you see this then your phone is trying to geo-tag your pictures.

Be aware that even in the best of conditions your phone can take 30 seconds or more to get a decent GPS position locked, so wait a bit after you open the camera app before you take the picture.

You can also speed up the GPS lock by making sure that you have the assisted GPS features switched on, see this previous question for details on how to switch those features on.