There are plenty of plugins that handle this, however you really don't need to use them if you don't want to.
$.fx.step will handle all your needs and is also uber useful and worth learning.
Here is an example :
 $.fx.step.webkitRotate = function(fx){
      if(!fx.init){
          var currentRotation = fx.elem.style.webkitTransform;
          currentRotation = currentRotation.split('(')[1];
          currentRotation = currentRotation.split('deg)')[0];
          fx.begin = currentRotation;
          fx.init = true;
      }         
      fx.elem.style.webkitTransform = 'rotate('+fx.pos+'deg)';
 };
You could then:
 $("img").animate(
    {
    opacity:1,
    webkitRotate:-180
    },1000,function(){
        //some function
    }
);
Its a crude example, and needs refinement, but hopefully you get the idea. Useinf $.fx.step you can set up custom animation params to animate any aspect of the dom or even variables. You can even use it to do custom calculations to determine the next step in the animation. For example: I recently used $.fx.step to do a custom animation on a css3 gradient, which there is currently no pluggin for.
If you must use a pluggin for rotation I recommend : http://www.zachstronaut.com/posts/2009/08/07/jquery-animate-css-rotate-scale.html
However ultimately his pluggin uses $.fx.step and its worth learning on your own.