Likely some of the msiexce.exe is hung trying to register some dll files. Some folks have gotten around this by using task manager to kill the larger memory use msiexec.exe instances and letting the install finish. Problem with that is you don't now what dll files never registered. I would suggest installing Process Explorer, which is a neat little app that shows which dll files are trying to be registered with msiexec.exe. If you need to kill one that is stuck, you can take note of the particular dll and once the install finishes out, go to cmd line and register the dll yourself via regsvr32 command.
Add the column ''Command Line'' to the columns displayed (View > Select Columns > Process Image tab > Command Line tickbox) and it will show you the path of the dll trying to registered such as
C:Program Files (x86)HPSprinterbinexample.dll.
Once you know the path of the ones that are hung, you can register them directly after install completes.