Todos los mensajes de repintado tienen poca prioridad en windows, si lo mueves por código varias veces, solo verás la última posición, quizás sea eso.
Código Delphi
[-]
for i:= 1 to 30 do
begin
image1.left := image1.left + i;
image1.Update; end;
Si mueves más controles, quizás te interese Form1.Update, ya que forzaría el repintado de toda la ventana y ésto hace que se "refresquen" todos y cada uno de los componentes que tenga.
Saludos