The task varies depending on whether your updates occur at a fixed time or with delta time.

First, let's consider the fixed time-per-updates (e.g. if your updates happened in response to a timer tick). You have two values to calculate:

The amount that the x value will change per tick
The amount that the y value will change per tick

This is simple enough -- you want to calculate the difference in x (and y):
destination - current position. Divide each value by the amount of updates that are wanted to get how much to move the sprites each tick. For example (untested code):

[pascal]type
TSprite = record
x: Single;
y: Single;
SpeedX: Single;
SpeedY: Single;
DestX: Single;
DestY: Single;
end;

procedure SetSpriteDestination(var Sprite: TSprite; NewX, NewY: Single;
Updates: Integer);
var
NewSpeedX: Single;
NewSpeedY: Single;
begin
// we want to move to (NewX, NewY). Calculate the differences
// to get the total amount to move (positive or negative). Once
// we know how far to move, we want a division, since we don't
// want to move over there in one go!
NewSpeedX := (NewX - Sprite.X) / Updates;
NewSpeedY := (NewY - Sprite.Y) / Updates;

Sprite.SpeedX := NewSpeedX;
Sprite.SpeedY := NewSpeedY;
Sprite.DestX := NewX;
Sprite.DestY := NewY;
end;

const
VERY_SMALL_NUMBER = 0.1e-6;

procedure UpdateSprite(var Sprite: TSprite);
begin
// check whether we've reached the destination
if (abs(Sprite.DestX - Sprite.X) <= VERY_SMALL_NUMBER) and
(abs(Sprite.DestY - Sprite.Y) <= VERY_SMALL_NUMBER) then
begin
Sprite.SpeedX := 0;
Sprite.SpeedY := 0;
Sprite.X := Sprite.DestX;
Sprite.Y := Sprite.DestY;
end
else
begin
// move there!
Sprite.X := Sprite.X + Sprite.SpeedX;
Sprite.Y := Sprite.Y + Sprite.SpeedY;
end;
end;[/pascal]

Note that you shouldn't compare floating point numbers directly for
equality -- instead, use an epsilon value as above. Floating point numbers
can have small inaccuracies creeping in over time, so the numbers may be
(e.g.) 0.00000002 instead of just 0.0 depending on the operations you use. Play around with the small number to toggle the "close enough" factor. I forget good values (the value 0.1e-6 is probably much too small here, try making it a bigger number...).

Things are a little more complicated if you use delta time. For this, do the following: think about how far you want to go in a given amount of time (note: time, rather than updates). Keep a track of the current amount of time that's passed that's passed. Then, it's pretty straightforward to calculate the amount to move. I'll explain how later today once I get back home (got work to do ).