I had this problem with a 2TB external Seagate disk. I thought the disk was just plain dead.
DiskUility could not repair it, which was fine. It's just a backup disk. But I wanted to repartition it.
BUT, it would not mount, and it would not unmount, by any means, force or not. It was in a kind of sad HD limbo.
Turning off Spotlight did not help either. (BTW, I think it was Spotlight (in conjunction with TimeMachine) which caused the problem to begin with.)
But what did help, after turning off Spotlight, was to kill a crazy fsck_hfs process that was hitting the disk in question so that DiskUtility could not unmount it.
ps -ax | grep fsck
sudo kill <process number>
where "<process number>" is the actual process number returned by ps. I found that solution here. And it works! read that whole thread.
Alternatively, you could probably also kill that crazy fsck_hfs process in Activity Monitor, where you will see it eating up your CPU.
After you kill it, then launch DiskUtility and it will now successfully unmount the disk and let you repartition it (or whatever).
BTW, I think the preferred way to turn Spotlight On/Off is a little more graceful than using the mdutil command.
Try this instead, to turn it off:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
and then just turn it back on again when done:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
In summary, there are steps in this fix:
1.) turn off Spotlight;
2.) kill the fsck_hfs process;
3.) launch DiskUtility and format the disk;
4.) turn ON spotlight;
5.) restart is probably a good idea.