For backing up contacts, emails, texts, calender, etc.. I personally use PIMbackup.
You can set it up to backup whatever you want and then save it to your SD card, and then when you flash it, just use Pimbackup to restore everything.
Here's a link:
http://forum.xda-developers.com/showthread.php?t=299705
I also use SPD backup use actually stores all your data files (windows folder) as well as everything mentioned above. I find SPD is better if you want to keep the shortcuts, bookmarks, little personal details (like google login names, browser history). I don't know if it's free or not though.