We currently use MDT at my company. It takes a while to properly set up the drivers, but you only have to capture 1 image once you do. It also takes a while to customize the deployment media, but I have ours down to filling in the computer name and an admin username + password.
I have also used FOG. It's great, but it's best for deploying to many of the same model. I think the latest version includes driver injection like MDT, but I haven't played with it yet. It's definitely worth taking a look at.
The one I wish I would have found before MDT is SmartDeploy. It costs money, but they have some nice features. First, they maintain a library of driver packs. This means you don't have to dig through a bunch of different websites to find driver packs. Also, they are probably more up to date than what you will find from manufacturers. Building the driver library is what took me the longest when I built my MDT server, mostly because our main manufacturer's driver packs were broken so I had to download every driver individually. Second, their image capture process is neat. You build a VM like any other solution, but they capture the VM's virtual hard disk instead of cloning it from inside the VM. You don't even have to sysprep!
We're looking into http://www.smartdeploy.com/ for system imaging and cloning.
Personally I have Macrium Free for my desktop backups, but I've never actually had to restore anything knock on wood so I'm not sure how great it is.
SmartDeploy user here, works amazing in our environment because SmartDeploy does all the work with drivers. You can use SmaryDeploy on top of WDS.
They have a lot of documentation on how to complete this, and I set this up in our environment quickly.