If rocking in gear works, then it points to a mechanical problem with the flywheel and the starter pinion.
If it's a problem encountered when hot, then it could be a case of the starter relay mod being the answer. To find out, as Graham says, fit a fly lead to the solenoid and in the event of a problem, lift the bonnet and touch direct to battery. If it starts every time doing this then the relay is the answer. Worked for me - now 2.5 years with not even a hint of a problem!!!
Paul Richards
Joint AO - L.A.D.S. (Lancashire and District Sevens)
Growing old is compulsory - Growing up is optional