I just had this problem. Check the connections to and from the solenoid and starter motor, and also check the earth strap from the gearbox to chassis. Do you have a remote starter switch in the engine bay? if so, try this and if it starts fine, then it could be the ignition switch (if you don't, i think you can still do this by using jump leads directly from the battery to solenoid, but check that first). If not its likely to be the starter or solenoid. I ended up doing all of the above, but you may get away with just cleaning connections.