I remember having real trouble with this with a platformer I made last year. My movement updates ended up being quite complicated to get the motion I wanted. Unforunately, I don't have the code any more or I'd take a look and hopefully give you some help!
One of the major problems we had was that we wanted the body to still be hit by objects and move with a bit of air control to push back against the force. You can't really do this with setting velocity because as soon as someone hits the body left and the
player moves right, the velocity flip-flops straight away.
If I remember correctly, eventually we got things working quite well by applying a force or impulse until the player got to a certain speed. This, coupled with a drag coefficient meant that there was a kind of 'maximum' speed the player could achieve. The
drag also slows the character down nicely, so while the direction might not change from frame to frame, it does change quite quickly but in a smooth way.
I imagine you could do the opposite for a minimum speed, but given the nature of your game (which I can only assume is a 2D constant scrolling flying shoot 'em up game) I would give the player a minimum 'x' coordinate and apply a force if the player is less
than that coordinate unless the player is unable to move backwards, in which case, forget I said anything.
If you want to see the movement I got on my game, take a look at the games section under videos, the game is Legendary Crusaders. I have to warn you, this was made using farseer 2.something, so it may not work in 3.1.