There is a way of doing this, but it involves some serious hardware.
You have probably seen bridge circuits where something is placed between the center points of two voltage dividers.
Doing this allows you to reverse the polarity applied to the motor if it is placed in this position.
This is a H Bridge:
In this diagram, switches are shown, but in reality, transistors or Mosfets would be used to do the switching.
To explain the operation, imagine that the power supply is DC with positive at the top.
If S1 and S4 are closed, then the left side of the motor will be positive and the right side will be negative.
If S3 and S2 are closed, then the polarity on the motor will be reversed.
You can very the speed of the motor by controlling the power supply voltage or by controlling how much of the total time the motor gets power. This is called pulse width modulation.
You can read about H Bridges here:
http://en.wikipedia.org/wiki/H_bridge
but they are much loved by robotic and other people and there are many practical circuits available if you do a search on Google.
http://www.google.com.au/images?hl=...t+diagram&gbv=2&aq=6&aqi=g10&aql=&oq=h+bridge