This is a bit more complex than you might think. "Something" has to remember the current state of the system, i.e. which direction the motor will travel the next time the button is pushed. I am not aware of electromechanical pushbuttons which would do this directly, via a latching mechanism.
You could use discrete electronics (transistors or an integrated flip-flop), but then they would need standby power to remember the current state. Or you could use a microcontroller with a bit of flash memory to remember the state. In either case, you would need a driver (bipolar transistor or MOSFET) to drive your motor current. This all gets a bit unwieldy.
I would suggest a purely electromechanical solution with a "latching relay": Use a DPDT latching relay to switch the polarity of the motor. And use a DPST momentary switch, with one pole to provide a voltage to the relay's coil every time the button is pressed, and the other pole in series with the motor.
Implementation details aside: Are you sure this is a good solution in terms of the user interface it provides? I would probably find it annoying that I never know which direction the motor will move first when I start operating this.