If you are really serious about finding the true speed / distance accuracy of your devices, the best way for the average rider to do it is this:
First, accurately measure the distance between two points on a smooth flat straight road. Longer distances yield better results but measurement can be tricky. Mile markers and vehicle odometers are not always accurate so it's best to do it yourself. Rather than spend a lot of time with a tape measure, Google Earth is an easier way.
Zoom in on a suitable road and add two placemarks at visible points like utility poles:
Use the ruler tool to find the true distance between your marked points. There is some error associated with Google Earth but in flat open terrain, it is usually +/- 3'.
Ride your "course" and compare the readings on your devices with the GE measurement. None will agree exactly. Ride the course again as soon as possible, since GPS readings can change with the satellite horizon. You will likely get different results. Adjust your bike's display to match the GE measurement. If this isn't possible, make a note of the difference and calculate a "fudge factor". At least you'll know how accurate it really is.
Errors are introduced in many ways. GPS measurements are taken between satellite acquisition points, which are never in a perfectly straight line and do not follow the exact line of travel. They also do not compensate for elevation change. It is also impossible to ride a bicycle along a perfectly straight line, especially at low speeds. Every movement of the handlebars introduces minute errors, which can be significant on long rides.
Note the GE example above is less than .5 miles and is for illustration purposes only. Distances of 2 or more miles are necessary for the best result.
Yeah, what can I say. I'm a geek. I do however agree with Stefan above. If you ride enough, these distances become less meaningful and are more for reference than accuracy.