As I know QueryPerformanceCounter sometimes doesn't work correctly on Athlon 64 X2 processors. AMD has released a driver update to fix this issue. But I'm not sure that this update was installed by all my users.

I use the following code and had no problems(Globals.CurrentMs uses GetTickCount()):

Code:
  const Interval = 30; // 30 ms
...
  while LastProcessingMs + Interval <= Globals.CurrentMs do begin
    Process&#40;&#41;;  // some processing
    Inc&#40;LastProcessingMs, Interval&#41;;
  end;
As you can see I do not compare GetTickCount results.