Sounds like the gear box. Have you tried adjusting the cable linkage going to the box, to make sure it is engaging all the way, and not just part way, thus causing it to slip out of gear?
Just fixed a lawnmower that acted this way. Took the gearbox apart, expecting to find worn out gears or clutch fingers worn off. All was in great shape. Assembled it, and adjusted the cable to pull another 1/4" to engage, and worked fine.
With the model and serial number, see if you can pull up some schematics of the gearbox on the net, and check out what might be causing it. Or post the numbers here, and we can see if we can be of further help.