When all else fails, check your wiring:
I experienced a similar problem last summer with my Specialized Speedzone... I rode home from work, and upon retrieving my ride data, I was delighted to see that my AVG speed was 34.8mph, and my TOP speed was 84mph! Wow!
Unfortunately, I was not suddenly bionic. No, I had noticed that the speed display would vary greatly as I watched it... 11, 25, 16, 0, 0 ,0, 12... and so on. Also, my 17.3 mile commute had whittled down to just over 11 miles.
I repositioned the magnet: NG. I replaced the magnet: NG. I removed the computer and burnished the pickup buttons in the mount and on the computer: NG. I slapped my face like Curly of The Three Stooges, then swapped the computer head with the one from my rainbike... also: NG.
Then I noticed that by moving the handlebars back & forth while the bike was stationary, I could get the computer to start to count....
Hmmmmmmmmmm.... Another Curly slap for good measure, and found that the computer pickup lead had been chafed raw by being pinched between a cable housing and the bottom edge of the head tube. A little Exacto blade work, a bit of black tape, a zip tie, and... fixed as new.
Those bogus figures, 34.8/84.0mph, were a tremendous and very pleasant... if perhaps fleeting... surprise.