You should put the DoubleBuffered-Line in the FormCreate-procedure, not in the FormPaint-procedure. Try:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=True;
[...Rest of the code...]
end;
You can use [ pascal ] [ /pascal ] or [ code ] [ /code ] - Tags to show the code formatted.

For future games you might want to take a look into SDL/DirectX/OpenGL or engines based on those graphic libraries like Andorra2D, Asphyre, Phoenix, etc.
Canvas is good for starters, but the performance is going the get slower and slower the more and more images you are drawing on the screen.