VMware fusion's Windows 7 takes long time to shut down (sometimes hang)

Upgrading to Fusion 4 will help some, but whether you upgrade or not, read VMware support article 1022625 to learn about the things that could be causing slowdowns and what you can do about them.

In particular, I recommend you follow the instructions labeled "Edit the virtual machine settings to reduce I/O usage by using more host memory":

Add the following lines to the virtual machine's settings ( .vmx) file:

MemTrimRate = "0"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"

In short, Fusion's code base derives from a server environment where one server is running many, many virtual machines which all are using the same OS. That code base implements several strategies to allocate less host memory to an individual VM than the VM thinks it needs. These settings turn those strategies off, which is a good thing for Fusion where you're typically running only one VM at a time. In particular, sched.mem.pshare.enable = "FALSE" turns off sharing pages of memory using copy-on-write, which does not work well the way Fusion uses it on MacOS and causes insane delays shutting down VMs which use large amounts of memory.

I also recommend adding this to your VMX file at the same time:

# Do not allow VM memory to be swapped
Prefvmx.minVmMemPct = "100"

I've asked VMware to make these settings the defaults for Fusion, but I'm not holding my breath. Until then, I manually add them to every VM I create, because, unfortunately, putting these changes in user- or system-wide config files seems not to have any effect.