Reverse engineered circuit diagram of a PWM motor speed regulator out of an oral irrigator water pump. This circuit works quite well, keeping the speed of the small PM motor fairly constant regardless of load. No transistor heatsink is required since this is a switching regulator. The efficiency under high load would be a improved if the output transistor was made to switch faster. That could likely be accomplished by using a FET in place of the bipolar and then adding a mild positive feedback path to the upper comparator.
Read source : http://www.members.shaw.ca/novotill/SmallDcMotorSpeedReg/index.htm