The problem occurs because some code has opened registry keys to a user profile hive that is being unloaded as part of profile unload during logoff. UPHClean attempts to deal with this situation by closing those handles and opening new ones to the .Default hive. To increase the stability of the handle table while it closes or reopens hive keys, it suspends all the threads in the target process. The problem is suspending those threads is very likely to lead to a deadlock or hang. Never before had the target being System but when using SVS, sometimes it is. If System deadlocks because of this, the log-off process hangs.
Microsoft anticipated some processes would not properly work when doing this type of work and put in an exclution list. The exclusion list is set via the registry value HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\UPHClean\Parameters\PROCESS_EXCLUSION_LIST. It is a list of process name that the clean-up utility should not attempt to clean up. The type is REG_MULTI_SZ to allow multiple process names.
To resolve this issue, add "System" (no quotes) to the value. If you do not already have any items in this exclution list, importing the .reg file in the attachment will add this for you.
In a future version of UPHClean, Microsoft will likely add a default exclusion for the System process.
Software Virtualization Solution 2.0, any build; 2.1, any build
Microsoft User Profile Hive Cleanup Utility