There's no easy answer for that. Many simulators check for collisions several times in between drawn frames.
I'm not sure if your code does this, but having a fixed timestep really helps with stability for almost no matter what you do. Glenn Fiedler wrote an article about it: http://gafferongames.com/game-physics/fix-your-timestep/
Basically take your elapsed time, break it up into fixed chunks, and send the left over time to the next frame. For example:
35ms elapsed, do two 16ms updates, add 3ms (35 - 16*2) to the next frame.
There's also Continuous Collision Detection, which I know very little about.