Accuracy depends on a variety of conditions coming together at a particular location and time, including distortion of GPS signals as they travel through the ionosphere and errors in the position (ephemeris data) transmitted by GPS satellites.
For most end users, accuracy is heavily influenced by having usable signals from more than 3 GPS satellites. Positions reported by your GPS receiver will probably be more accurate if it’s using at least 5 or 6 satellites. The position of satellites being used is also significant. Your calculated location is more accurate if the satellites you’re using are farther apart.
If you’re moving around, the set of satellites your GPS receiver is able to use will probably change as you pass by obstructions (man-made structures, trees, hills). You get better accuracy if your receiver has already acquired ephemeris data from most of the satellites that are currently in your area so it can quickly switch to using other satellites as signals shift in and out of view.
GPS receivers can gain additional accuracy by using Wide Area Augmentation corrections to data they receive from GPS satellites. Where available, WAAS can provide corrections for errors in a particular satellite’s timing and orbital data as well as localized corrections for distortions caused by the ionosphere.
It is worth mentioning that the U.S. government has the ability to degrade the accuracy of GPS signals using Selective Availability.
Finally, the quality of algorithms and circuitry used for processing satellite signals has an impact on accuracy. Most consumer grade receivers perform adequately getting your position within about 20-30 feet most of the time. For applications where accuracy is more critical, more sophisticated equipment such as the Trimble Copernicus ship used by Raveon’s GPS radio can provide better results.