Hi Kevin and Cris,
The average vehicle speed displayed by a GPS, say the popular TomTom GO, is at least as accurate as the calibrated speedo in certain Police cars - typically better than 0.2 mph
Car speedos over-read for a number of reasons:
1. The speedo is calibrated for brand new tyres
2. The speedo is calibrated for correctly inflated tyres
3. The speedo is calibrated for one (possibly two) brands of tyre - the brands that are fitted as standard when new
4. It's a mechanical system with built in tolerances - and some manufacturers have a very optimistic speedo (by design)
My C270, travelling at 70 mph (GPS) fitted with correctly inflated brand new tyres, shows a speedo reading of 72 mph.
Before I had the tyres changed, running at the same GPS 70 mph, the speed difference was 4 mph on tyres with 2 mm tread.
If you change the tyres to a different brand, say I swapped the 225/45R17 Continental tyres for Michelin - then different manufacturing processes will adjust the actual rolling diameter of the tyre by the equivalent of 1 mph if "oversized" - so the speedo would no longer read 72 mph (for an actual 70) but 71 mph - and 3 mph if "undersized" - making the speedo read 75 mph for an actual 70 mph.
So if you drive a car with correctly inflated new tyres (of the same type fitted to the car by the manufacturer) then the difference between GPS and speedo should be 2 mph or 3 mph at most.
Under-inflated, heavily worn tyres from a "bargain" tyre manufacturer can easily show a difference of 7 mph, and more if the linkage from the wheel to the speedo is mechanical - I'm thinking back to Ford cars in the mid 70's which could be 10 mph out at an indicated 70
Robert