Touching SW1 makes the motor run forward. Momentarily pressing SW2 makes the motor runs backward. To reverse the motor’s direction again, it is enough to press SW1 momentarily.
R1 and R2 are chosen according to the gain of Q1 and Q2. See MEC127 for more details.
The bipolar transistor and the power MOSFETs are chosen according to the current drained by the motor. If heavy-duty motors must be controlled, the transistors must be mounted on heat sinks. The circuit can be powered from supplies in the range of 9 to 15 V.