There now follows various circuits for driving DC motors. The circuit most suitable for your project will depend mainly on the current consumption of your motors.
The following circuit is based on the L293D which has several plus points for a minimal controller. The 'D' on the end of the 'L293D' means that it includes output diodes meaning that you need less additional components at the expense of a smaller current output.
For the L293D datasheet see http://www.st.com/stonline/books/pdf/docs/1330.pdf
This controller is limited by the abilities of the L293D:- it can provide 600mA per motor or a maximum of 1.2 amps for a micro-second.
The motor supply can be between 5 and 36 volts.
Each motor requires two pins from the micro-controller and this uses the 'tri-state switch' stage mentioned earlier.
Cost
This requires one tri-state switch per motor;
one L293D for every two motors. The L293D costs about $4.30
So about $6 in total - for driving two motors
NB I now recommend that you use an SN754410 instead of the L293D. This is a direct plug in replacement and has the advantage it can provide 1A rather than 600mA and it also costs about 98 cents !!!

There are two ways to do this:-
Either: use the previous 600mA circuit but replace the L293D with a Texas Instruments SN754410 which is a direct pin for pin replacement. This is the preferred solution as the chip costs 98 cents and you dont need the additional diodes.
Alternatively:- do the following.
This circuit is similar to the 600mA version except that:-
1. It uses the 'L293' rather than the 'L293D' See http://focus.ti.com/lit/ds/symlink/l293.pdf
2. This chip allows a higher current of 1 amp per motor but requires us to add the diodes at the output stage. These should be fast, ie Schottky, diodes that can cope with the 1 amp current and a reverse voltage greater than, or equal to, the voltage of your motors. The motor voltage is still limited to 36v.
Costs
This requires one tri-state switch per motor;
one L293 for every two motors. The L293 costs about $5.81
You will also need 4 diodes per motor. The cost of these will vary depending on the voltage of the motors, and the current, but lets say about 50 cents each - ie $2 per motor.
So about $12 in total - for driving two motors
This circuit is similar to the previous ones.
It uses the tri-state switch to control speed, direction, and braking.
Schottky output diodes are used that match the current and voltage for your motors.
The only 'real' difference compared with the 1 amp circuit is that we using an L298 rather than one of the L293 series. The L298 lends itself to mounting a heatsink, due to the higher current, but is a bit of a swine to solder onto strip board or matrix board and is more designed for PCBs. It uses a 'Mulitwatt 15' package - and comes with two strips of pins each using a standard 0.1" pin separation. But the problem is that the second bank of pins is offset by 0.05". So if you are using strip/matrix board then you will need to be very carefull when bending one set of pins to fit.
Cost
This requires one tri-state switch per motor;
one L298N for every two motors. The L298N costs about $3.57
four diodes per motor at about 50 cents per diode.
So about $11 in total - for driving two motors