Change the dash or the speedo itself. The whole thing is mechanical. As a test, drive without the dash in and see if the needle spins to make sure it's the dials that is the problem. Buy them from the wreckers quite easily.
Also see if the whole thing is lubricated. Spray some grease down the cable to make sure nothing is stuck.