To get a smooth rotational interpolation based on vectors, the “easiest” way is to use quaternions. When using XNA’s purely 2D rendering pipeline, you can’t really use quaternions to directly rotate something easily. Therefore, this class reports the euler angle, and normalized vector to work with. Super thanks to Maw!Soft for explaining XNA’s Quaternions and a bit of super important code. I spent hours pounding wikipedia and XNA before that post made it clear why I was getting weird results.
Anyway, the awesome part of a quaternion based smoothing is you can take a vector (say from your control stick) and get to it without any weird jitters, speed changes, or stalls. Hooray for 4D math in 2D!