I think there is a simple answer.
Why not make a DAC, and connect the output to the input of an H-bridge circuit and connect it's output to the motor?
If you do a search on google for H-bridge circuit, and you do a search for R/2R ladder, you could end up with results.
Now connect the digital input of the dac to the low-bit outputs of a counter IC of your choice.
Once you have that, adjusting the motor speed is as simple as triggering the clock pin of the counter.