As has been well documented, the Galaxy S phones have terrible GPS functionality. It works for a minority, but it is slow/inaccurate for some and for others it just doesn't work at all. How can I fix this?
Four ways: Upgrading the software, fixing the hardware, resetting the GPS settings/data, and using "fake" GPS.
Upgrading the Software
You can also try flashing 2.3 GPS code (see this XDA thread). Apparently it's the best yet, and should work with any ROM.
Summary: Gingerbread great, Froyo good, Eclair bad.
Note: A minority of users have worse GPS performance after upgrading to Froyo. If you have the very latest Froyo update and this is true for you, I believe you can fix it by continuing with the other steps below (or the 2.3 GPS code above). You probably have bad GPS data and settings left over from Eclair, or perhaps it's just that your phone has been "cold started" and the GPS needs to collect some information about the nearby satellites first.
Fixing the Hardware
A major problem for many users is, yes, a hardware problem -- but not a GPS chip issue as some have claimed. I was reluctant to accept this myself, but after trying everything else I finally resorted to this fix, and it worked! The hardware has apparently been fixed in newer device versions, so if you bought your phone after October 2010 I recommend trying the other steps before doing this. But the good news is that it's easy to do. There's a detailed guide on XDA; here is the quick version:
Fixing the Hardware (2nd option)
There are 2 different methods which both require soldering skill but are said to significantly improve the GPS signal. Read more, see photos and a step by step guide on XDA.
Reset the GPS Data and Settings
I recommend only trying the following if your GPS is still slow or doesn't work after trying everything else; in most situations the default server is fine.
Using "Fake" GPS
Note: This might make things worse in situations where the phone relies on the inaccurate aGPS more than the "real" GPS. Experiment with and without it.
And that's it! I hope this guide works for you and you enjoy your newly functional GPS.
There is a simple guide of the hardware fix on xda-developers, which doesn't require you to remove any screws. It worked surprisingly well on my Galaxy S.
The trick is to increase the pressure of the GPS antenna connector by placing a small stripe of tape above the connector. The guide on XDA has some nice pictures and instructions, definitely worth reading.
I have several bluetooth-GPS adapters that I use with all of my devices when I need a superb signal because a specialiced receiver is almost always superior to a smartphone's internal GPS (due to integration constraints).
See a more generic question/answer here: What can I do when my GPS doesn't work (or if my tablet doesn't have GPS)?