I think you're getting close, I have a couple of thoughts:
1. You can use a single DPDT relay instead of two SPDT's to reverse polarity to the motor to reverse direction. Here's a diagram:
http://www.1728.org/dpdt.gif
2. If I understand what you want, you want to have three switches: on, reverse, and off. Pressing the on button turns on the machine and starts it pushing. When it reaches the limit of its travel it contacts the reverse switch, which energizes the reversing relay and makes the machine pull back. When it reaches the limit in the other direction it contacts the off switch which turns the circuit off. The on and reverse switches normally open. You need a latch relay for on, a latch relay for reverse, and a DPDT relay for reverse. For the off switch you want a sPST normally closed switch, pushing it kills the power to both the on and reverse relays and stops the circuit.
The on switch has to be DPDT because when the circuit starts, the off switch is on from the last cycle. So it has to work that the circuit will start with on and off switches both pushed at the same time. So the on switch has to both start the circuit and bypass the off. But the on and off are at different points in the circuit, so they have to be isolated. Thus you need a switch with two throws.
I'll try to draw something up later.