Normally I wouldn't a topic about such a simple device, but since there are many sites offering wrong information (for eg. this one short circuits your power source), I had to do it.
An H-bridge is an electronic circuit which enables a voltage to be applied across a load in either direction. If you need to learn more, read here.
Now, assuming you know what a hbridge is, let's choose a topology for our implementation. You already know we'll be needing transistors or mosfets (if not, please read the docs above), what you might not know is that these transistors will have to handle a high enough currents, especially when the motors they control are overloaded.
Some time ago, I've build a robot on a RC-truck, the load was so high because of the heavy batteries, that when the motors got the command to move forward they overheated and died.
So it's important to use heat sinks, to dissipate the heat. So, for a h-bridge we will be needing 4 transistors, working in pairs at a time. If we use 2xPNPs and 2xNPNs we can have common collectors, and so, using a single heatsink per pair. For the topology this is the only requirement I will impose, and here is one possibility:
You will need to place the left side MJE2955 and MJE3055 on the same heatsink since they have common collectors. A separate heat sink for the right size transistors must be used.
These components support up to 10A current, so they will work well for small to medium motors.
Remember, a H-Bridge only controls 1 motor. So if you'll need to driver the servo motor and also one main, propulsion motor you will need two separate h-bridges.
Here are some of the h-bridges I've created. On a board I usually create 2, since I mostly use 2 motored robots.
And here is a nice board having an ATMega8, a MAX232 for serial communication with a PC, and two h-bridges for controlling two big gear motors. Again I've used MJE2955/3055 pairs, but feel free to use any transistors/mosfets you have.
It runs well and it doesn't heat up much. In case anyone needs further details on how this works, or other things like why we need the D1-D4 diodes, feel free to ask.
Also the R3,R4 resistors can be adjusted to suit your needs. For me, they are used to limit even further the current given by the microcontroller on the output control pins. Not really required in my case.
Some more pics:
EDIT: Here are some variants created by my readers
Victor, built a robot using a Mini ITX x86 board: