Analog speedo's aren't usually at all accurate below 5mph, so perhaps you only need the range 100..2000 rpm. A DC motor that's not struggling ought to be controllable over that range with PWM, just make sure it can provide a good factor extra torque than the speedo+cable needs so that the speed/voltage curve is close to linear. Find a motor that does about 2500rpm at 12V so you have some headroom. You'll need to correct for battery voltage when derivng the PWM ratio.
Stepper motor at 2000rpm isn't trivial, does sound like overkill.