I'm working on an application which needs to vary the speed of a motor down to as low as possible.
We are pretty much stuck with brushed DC motors, 12V rated. We will use PWM will be in the range of 10Hz to 500Hz, probably more likely to be lower than higher.
Will we be able to achieve a low speed? We want to use a 315rpm motor (unloaded speed) and go down to at least 1/20th this speed.
http://uk.rs-online.com/web/p/dc-geared-motors/4095232/
We have the option of allowing the motor to free-wheel or brake on each PWM cycle. I think free wheeling will allow for lower speed, but I'm not certain.
What we're worried about is if we lower the speed too far, the motor could stall?
My 2 cents. Recalling back to the days when DC motors ruled the universe and my job was to design drive system for paper machines, steel mills, various traction applications and whatnot, i can still recall some of it. Now the motors i was playing with were anything from 100 kW up to 20 MW so a bit bigger

Still the same rules apply.
For a separately excited ideal DC motor the speed is directly proportional to armature voltage and torque is directly proportional to armature current. The constants of proportionality are partly determined by the mechanical structure of the machine and partly by the field flux density provided by the separately supplied field coil (or permanent magnet field for smaller motors).
This means that an _ideal_ motor will produce any torque while standing still - it just means that the armature voltage is 0 but there will flow an armature current sufficient to generate the torque against the field flux. Same with the motor turning under no load: the speed is defined by the armature voltage while no current flows.
A real motor naturally falls short of the above due to imperfections such as winding resistances etc. As others have already noted you need to account for the resistance of the armature coil. For a practical motor the armature current is defined by a simple equation relating the supply voltage, armature resistance and back EMF generated by the motor.
V = E + RI, or I = (V - E) / R, where
V = supply voltage
E = back EMF from turning motor
R = armature resistance
I = armature current
Further, E*I will be the mechanical output power while R*I^2 is the "copper loss". The proportionality of RPM vs armature voltage is given by the motor constant Kv (RPM/V).
The best way to control a DC motor is a cascade controller with an outer speed control loop and an inner torque control loop. The torque loop can be a simple PI type analog controller implemented using a single opamp and a current shunt or, it can be a sophisticated FPGA based all digital wonder. It all depends on what exactly you need. Whatever else, it has to be fast, step response settling times should be well under a millisecond in every case. The speed loop also works nicely as a PI type controller, rarely do you need a D term and generally it does more damage than good.
The ultimate controllability depends on several factors; how the load torque varies as a function of time and angular velocity, what quality motor do you have (i.e. how well they are characterized and if they have gross or minor nonidealities), and finally how clever are your control algorithms including the actual power stage driving the motor itself.
I would start by implementing the above cascade controller with an analog torque loop and simple feedforward to compensate for the largest motor nonidealities, primarily the armature resistance. The feedforward term should be calcualted from the basic motor equations to be as spot on as practical, thus minimizing the corrections needed by the controller.
If you succeed in implementing a good controller and the load is at least reasonably well-behaved, 1:20 speed ratio should be a piece of cake. Whatever else you wish to say about brushed DC drives these days, the fact still remains that as far as controllability is concerned they are second to none.
Finally, addressing your specific concern regarding stalling at low speeds; it will not happen in a control scheme such as what i outlined above. You do need a reliable and reasonably accurate velocity and current feedback to give the controller a chance to do its job, and you need to tune the control loops at least decently but once you do, the control system is guaranteed to maintain speed within the envelope possible for the motor/load combination. For the record, the best precision digital speed controller implemented in the team i worked at the time was accurate to within 22 ppm of nominal 1500 RPM motor speed and the motors had no problem following the guidance using exactly this control scheme. To be sure, the torque control was a very fast 4 quadrant analog circuit but much less is enough to get a good result in a normal case.