I don't know how you plan to use this, as in will this be driven by a micro controller or something else..
What size motor? how much current draw?
If you want something cheep and simple up to 1Amp just get a SN754410 HBridge,and a hex inverter.
You can hook a motor to the Hbridge and the Hbridge inputs to a Micro controller ( one to a hex inverter and to the same MCU pin as the other input).
Set the micro to do Pulse-width and vary the Pulse width to get smooth speed control both backwards and forwards, as well as a limited braking. Start by push button? not sure how you would get that without a micro controller ....
Perhaps you can also use a 555 timer to generate a pulswidth and vary it with a POT, and have a push button to turn it on and off. It would accomplish the same task as an MCU without the need to program anything...(still need an H-bridge) If this sounds like what you need let me know I can post up a quick schematic...