first, a few things.
1. you can't use 'delay' code to guarantee framerate will ACHIEVE 60 or 100fps. if you run slower, you run slower... not much you can do there. Now, that's also different from wanting to FLIP on a 60Hz or 100Hz 'boundary' of time, which using VSYNC would help with.
2. your delay code should keep a static that is 'start of world time', and base everything from there.
3. you timeLeft isn't quite right. If you really want to delay AND sync moving forward, try:
while (currentTime >= timeToNextUpdate) // using while guarantees we'll 'catch up' if a frame runs really late...
timeToNextUpdate += m_iUpdateInterval; // increment to next interval based off whatever world start time was
4. speed of objects should all be in UNITS PER SECOND. Meters. Feet. Whatever. Then, you would either use a per-frame constant for time (that is 1/Hz, which is 1/60th or 1/100th of a second) and multiply times u/s, OR when your 'physics' update runs, you calculate the delta time since the LAST physics update, and use that as your multiplier. But everything is done based on some delta between frames, and some speed per second value.
Also note that if your delay 'runs late', and you 'catch up', you MUST use delta time between frames and not a per-frame constant. i.e., if you miss a frame, your delta isn't still 1/60th, it's 2/60ths (or more..) for that frame's physics run.
That make sense?