I use GPARTED. It's open source; free. I used Ghost in the past and it was a bit easier but I'm now used to GPARTED and I like it just fine. It has a decent GUI and allows you to re-size, copy, move, create and delete partitions. You can set flags and disk labels. It works faster than Ghost did.
There were times when the cloning would fail but I would go to the GPARTED support forums and they had good help there. They also have good documentation and tutorials on their Website.
Biggest limitation - it only clones disk to disk. Can't store the image on the network or CD's like you could with Ghost. So I have one or two drives set aside just to store images. When I have an image of a model, I reduce it to its minimum size and copy it to an image drive. I can have 4 different PC models stored on each image drive.
I list each PC model specs and build info (apps, customizations, updates, etc) on a spec sheet. The spec sheet is rubber banded to the image drives.
When I need to build a PC in a hurry I grab the image drive, copy and size-up the appropriate model partition to the new hard drive and tape a copy of the appropriate model spec sheet to the new PC build. After deployment I use the spec sheet to update my equipment database.
I feel overly wordy. Hope someone finds this useful!