Mine started after I switched tranny's. It comes down to two things:
the cable is worn and most of the grease that is supposed to fill the
cable has dried up or leaked, or the connections at the tranny and/or
speedo are a little loose.
The connections are easy enough to check. I could look at my cable and
tell it was in decent shape but upon spinning it with my fingers it
felt dry. I pulled the cable from the sheath and used a grease gun to
inject bearing lube into the sheathing. Not too much all it has to do
is dispace the air between cable and sheathing. You do not want it
oozing out. Insert the cable back in the same way it came out. I
start into the end where I injected the lube, this helps distribute
it to the other end. Ever since I did this my speedo is very smooth
and doesn't bounce around at all
Or you can buy a new one, but my fix has worked for 3 years.