From what I have seen and read, on a straight road at a fairly constant speed in the open, a satnav is extremely accurate.
Because it calculates speed from the distance between two points travelled in a certain time then if your speed is changing or you are not driving in a straight line the some tiny inaccuracies occur.
A car speedo is not permitted to under read and is allowed 10% optimism, so manufacturers usually tweak it to halfway between the two.
I find my i10 speedo is an almost constant 5 mph optimistic, which is a real pain at 30mph until I now compensate for it, not wanting to be another cause of tailbacks.
When I travelled at 60mph on the speedo the sat nav said 55 mph
When I did 40 mph on the speedo the sat nav said 37 mph.
Tried this out from a long run, dual carraigeway road at the weekend.
Not really bothered about it though.
For what it's worth, I have always found the satnav to be at odds with the speedo in every car I have ever driven.
'91 Mark 1 Renault Clio 1.2. '97 Ford Escort 1.8 Ghia, '06 Toyota Aygo, and the '09 Hyundai 10 Comfort. Also been used in a LDV van (can't remember the model)
TomTom One Classic. Garmin 215WT. PC Navigator 8, PC Navigator 9, iGo 8.0 and iGo 8.3
With all those wonderful and weird combinations, I've usually found the satnav to say I'm going slower than the car. Just one of those things. The car's speedo should be accurate enough that you don't get a ticket, so I'm happy to use that and just turn off the speed message in the satnav. I find the space on the screen is better used for time/distance to destination anyway.