Is there anything a dealer can do to make the speedometer read the actual speed the car is traveling instead of the bs value that is always at least 2 mph higher than what I'm really going?
Probably not. Read this; Speedometer - Wikipedia, the free encyclopedia There's bound to be a slight deviation in the accuracy of the speedo and if it read 1 mph over and you got a speeding ticket, you'd probably sue the manufacturer. As such, they put a little leeway into them to avoid this. You will probably find that your SatNav gives the correct speed.
Have you mounted a non oem recommended tire size? Using a smaller diameter tire would give you speedometer error as you are seeing. So, mounting a larger diameter tire will make your indicated speed decrease.
Nope. Going to a larger size tire will help fix the error but your displayed mpg will appear lower (more realistic). I think this is why Toyota put the 215/45/17 tire on the Five. It's shorter than the 195/65/15 and inflates mpg even higher. The 205/50/17 is closer to the OE 15" size but the mpg would drop even lower. Damn Toyota and their trickery! Hahaha
I haven't tested it in my Prius, but even though my Civic's speedometer read a few high, the odometer was almost exact. The OBDII port gave the correct speed. The car knows what the speed is (if you have the stock tire size), it just lies to you on the speedometer.