You have two options.
You can use an accelerometer. Lego sells one that can be found here. There are also aftermarket ones at mindsensors.com. This allows you to independently measure the acceleration of the robot. You have to then integrate this information twice to get positional change. The way to do this is to put it in your control loop and sum up 0.5*dt*dt*a where a is the accelerometer reading (there will be one for each axis of motion) and dt is the time between samples. This nice thing about this is it gives you absolute displacement. That is it accounts for motions that cancel out so you can set a straight line path back.
You can record each displacement into a variable for x and y directions using the servo readings from the motors - remember to reset the encoder value from the servos after each reading. This is harder because you have to account for the geometry of the wheels and keep track of the robot heading - lego also sells a compass sensor if you don't want to deal with finding your heading, but you'll still have to deal with non-spinning turns. It's also prone to accumulation of errors. (the accelerometer is too but not as bad I think.)
Your admonition of 'no other helpers' could be interpreted to mean you don't want the first solution in which case you are left with using the encoders and figuring out the differential motion of your chassis design (which may be non trivial).