Best tip i can give you is to always think in the terms of time, ie pixels/second for speed, pixels/second^2 for acceleration and every other place.

Say your gravity is 20 pixels per second downwards then you'l you'll update the speed like this:

[pascal]
Sprite.Speed.Y:= Sprite.Speed.Y + Sprite.Acceleration * DeltaTime;

Sprite.Postion.Y:= Sprite.Position.Y + Sprite.Speed.Y * DeltaTime;
[/pascal]

where DeltaTime is the time between two frames in seconds.

And yes you have to call the collision routines each frame, so make shure they are quite fast.

One problem with time based movement is that it's very easy to get stuck inside a wall as you move the sprite different ammount each update and not a fixed amount of pixels. If you go fast enough you can even walk through walls if the collision detection algorithms doesnt compensate for this.