Does it always lose the same amount of steps? If so, perhaps your calculations are incorrect. If not, it could be electrical noise. Are you using shielded cables to your steppers? As a test, you could run part of the code on a real slow speed. It will take a while, but if it works ok, or you get less missed steps, then you may need bigger motors.
Just a few thoughts!