Fed up with speedos breaking on my Jincheng Monkey replicas I fitted them with pushbike computers. These are cheap and if they're calibrated correctly, extremely accurate.

They also have great functions like a clock, total distance and trip meter, average speed travelled, maximum speed reached, duration of trip, etc. In fact they make a normal speedo look silly. They're waterproof and can be detached from their mounting in a jiffy.

The only difficulty is that the magnet that comes as part of the front wheel mounted sensor is designed to be fitted to a spoke. If you have solid or cast wheels you have to get one of those very small and powerful rare-earth or ferrite magnets and glue them onto the rim.
On some bikes the wheels are steel and these magnets will simply stick themselves on to the rim very firmly.

For the calibration you have to enter the circumference of the wheel in mm. Rather than just trying to measure it with mums cloth tape measure, mark the ground with chalk and the bottom of the front wheel in contact with the ground and align them. Roll the bike a few times forward, the more times the better, in a straight line, measure the total distance and then divide by the number of complete turns achieved. This will give a really accurate circumference.
In theory, as the tyre wears down this should be repeated, to maintain accuracy, but probably not worth it.

OK, I know that there are clever-dick ways of calculating the circumference of a circle using maths and geometry, but if, like me, you spent your time at school smoking in the toilets or feeling girls tits for 5 pesetas a go, you're better off with the aforementioned method.

The only disadvantages are the loss of perceived performance, as the MPH is now REAL, not the notoriously inaccurate and optimistic readings we get from normal speedos, the tiny battery last about a year and before you change it you have to make a note of the total distance travelled to enter it once more, as this data is lost when the battery runs down.