Thanks again for all the info.

I don't think it was a specific line in the G-Code. When I was messing about with it trying to diagnose the problem, I made a small square cut-out with some depth clearance, bridges etc. Then I'd load the G-Code into the control program (NCStudio in my case), run the code. When it finished (usually with no problem), I'd manually move the bit and reset the origin and just run the code again so it would make the cuts again on another part of the scrap board and more often than not, but randomly, I would have the crazy plunging problem. It was roughly 10mm, not exactly 10mm every time too.

I couldn't re-create it and looking at the G-Code, it didn't look like there was anything obviously wrong ( I am a php programmer so am familiar with what code should look like ) there.

@Jonathan, could you tell me what backlash is, and what causes it/what to look for? Also, do I have to use the control program that came with the router, or can I use anything (like LinuxCNC) to control the machine? Is there a machine profile or something like that to set up the control program to work with the router? I don't really like NCStudio, and I think it's pretty buggy.