MOSFET based H-Bridge Circuit
There are plenty of circuits for controlling a motor via a MOSFET H bridge - just google "mosfet h bridge". Here's the first one in the list: -



Here's the website I got this from - it'll give you loads of good ideas.

Basically, the motor spins one direction when inputs B and C are taken to the appropriate logic level. To reverse the motor take inputs A and D to the appropriate logic level and make sure you don't try and control it both ways because you might short out and damage your power supply or battery.

Obviously if you are running your logic signals at 3V3 you'll need to choose a MOSFET that reacts to this sort of gate voltage correctly. If using switches then having them controlled from the 12 V supply is fine but, in reality, performance and circuit is determined by your power supply voltage.