You can always apply an impulse (just once) towards the direction you want to move your character, and when you want to make it stop (when it reaches its goal), apply the same impulse to the opposite direction (assuming that there is no friction involved).
Top-Down Action RPG? This sounds like Gauntlet, very nice :)
You can make a function WalkTo(Vector2 point), where at each timestep checks the speed of the character, and then applying impulses according to that. For example (I don't think this code will compile or work but maybe will give you a clue):
private bool WalkTo(Vector2 point)
if((body.Position - point).Length() < 10) // If it is 10 units from the destination, we consider it has arrived
Vector2 currentSpeed = body.LinearVelocity;
Vector2 impulseNeeded = Vector2.Normalize(body.Position - point) * maxSpeed;
body.ApplyImpulse(currentSpeed - impulseNeeded);