That solution is something like how I did my extra lives. (Edit: on re-reading this, it's pretty much exactly what Villek wrote )

I have a variables:
Code:
fScore : integer;
fLives : integer;
fNextLifeAt : integer;
At the start of a new game
I initialise them
Code:
fScore := 0;
fLives := 3;
fNextLifeAt := 25000;
then in my game loop (or timer event),
I'd check
Code:
If fScore >= fNextLifeAt then
begin
    inc(fLives);
    inc(fNextLifeAt, 25000);
end;
Of course this isn't exactly how I do it, My extra lives are spawned and need collecting before they take effect and my system is Object Oriented, but the theory is the same.