As Semi... stated, the perfect solution is the H-BRIDGE. The reason is, you will have to use relays instead of switches if you need to work with digital electronics such as with microcontrollers. With relays there will be two problem.
1. Back EMF - This can be sorted out with a diode placed on the reverse direction of the coil
2. Sparks to damage the switching elements of the relay due to high current taken on start of the motor.
Also consider your switches has 4 combinations. So on the H-BRIDGE also, it is the same number of combinations but arranged in the shape of letter H to do amazing things with motors.

- hbridge.gif (997 Bytes) Viewed 9658 times

- bjt-schematic.gif (23.92 KiB) Viewed 9612 times
All these can simply be avoided with H-BRIDGE. A set of transistors (or Power FETs) arranged in an order where a microcontroller can use to decide the direction. Not only that with a H_BRIDGE, you can control speed of the motor if you use PWM pins of the uC. Lot of variations with that simple arrangement.
Tip: I used L298 IC (Dual H-BRIDEG) many times and found that it is a fantastic solution to minimise the space requirement on the PCB.