You can use time-based, rather than frame-based, movement. This means that instead of moving x pixels per *frame*, you move (x pixels * time_passed) per frame. This adjusts the speed of the game dependent on the time, so that if a fast computer gets lots of updates, the characters will move slower each frame and will end up at the same point at as not-so-good computers. The main difference is that faster computers will get smoother movement.

For this to work, you'll have to have real numbers instead of integers for your movement speed/positions.

There are a couple of threads about this sort of thing in various forums: here and here. There are plenty of links/info in those for you to look at.

Locking the frame rate (giving the timer a value > 0) will work sometimes. It's certainly the easier solution. However, it has the disadvantage that too-slow computers will not be able to update quickly enough, so movement will not be at the same speed as with fast computers. Also, 50 is a bit low, since it equals 20 FPS (1000 milliseconds / 50 = 20FPS). You should probably aim for an interval of 33 (1000 / 33 = approx 30FPS).