Win32_Product WMI class is so slow because it is doing a Consistency Check - processing every package using Msiexec.exe - everytime you use it.
Check out the issues and vbscript code to do it using a better method at this page: http://csi-windows.com/toolkit/288-win32product-wmi-class-replacement