Well, what I have heard gparted is good at this. You can create an live-cd from which you can boot when the computer start and then manipulate your partitions from the cd. Just defrag your drive first (so all information is moved to the beginning of it) and then you shouldn´t have any problems with loss of data (gparted takes from the end of the partition). Do not know from experiance how good it is though, since I haven´t used it, but what I have heard sound very good.
Link:
http://gparted.sourceforge.net/
There you get better instructions about it. Just click your way to the live-cd section for the ISO.
Note:
Just make sure you use the live-cd, because the program itself is for linux, so you cannot use it from windows.
Darkness, you haunt me. If I give in, I would be an monster beyond imagining. Light, you guide me. Thanks to you, I see past the nothingness. Life, I choose to live in the light.