How do I limit the current supplied to a DC motor?
The situation you are describing is the "stall current" of the motor. It is the amount of current the motor draws when it cannot rotate. High current here is normal, but does no work.

Rather than trying to limit the current, why not use a microcontroller to detect the high current condition and stop applying power to the motor that is locked? This can prolong the life of the motor by avoiding the heat buildup that comes from running at such high current. 

There are a variety of ways to sense the current, the simplest way would be to place low value (0.1 ohm) a resistor in series with the motor. Then the microcontroller could measure the voltage drop across the resistor. As the motor draws more  current the voltage drop increases. When a threshold is crossed, the microcontroller can stop applying power for a period of time.