The error traces weren't being terrible helpful:
Exception generated at: 18/12/2012 14:09:31Error Type: System.NullReferenceExceptionError Message: Object reference not set to an instance of an object.Error Stack Trace: at CommandBarOnDemandPopupWrapper..ctor(XmlNode controlXml, ExplorerWrapper explorer, PrepareMenuCallback callback) ilOffset = 0x42at MenuState.PrepareMenu(CommandBarPopupWrapper parentMenu) ilOffset = 0xF9at MenuState..ctor(IClientOrganizationContext clientOrgContext, String context, ExplorerWrapper explorer, Int32 index) ilOffset = 0x1E2at <>c__DisplayClass2f.<SetupMenus>b__2a() ilOffset = 0x3Cat <>c__DisplayClass31.<SetupMenus>b__2c(Object unused) ilOffset = 0x0at <>c__DisplayClass1a.<QueueUserWorkItemSilent>b__15() ilOffset = 0x0at ExceptionFilter.TryFilterAllCatch(Action body, Action`1 filter) ilOffset = 0xF
Stack Frame:
at OutlookUtility.HandleExceptionInternal(Exception exception, Boolean showMessageBox, IWin32Window messageBoxOwner, String errorMessage) ilOffset = 0x107at <>c__DisplayClass17.<QueueUserWorkItemSilent>b__16(Exception ex) ilOffset = 0x6at <>c__DisplayClassa.<TryFilterAllCatch>b__8(Exception ex) ilOffset = 0xCat ExceptionFilter.TryFilterAllCatch(Action body, Action`1 filter) ilOffset = 0x34at CommandBarOnDemandPopupWrapper..ctor(XmlNode controlXml, ExplorerWrapper explorer, PrepareMenuCallback callback) ilOffset = 0x42at MenuState.PrepareMenu(CommandBarPopupWrapper parentMenu) ilOffset = 0xF9at MenuState..ctor(IClientOrganizationContext clientOrgContext, String context, ExplorerWrapper explorer, Int32 index) ilOffset = 0x1EAat <>c__DisplayClass2f.<SetupMenus>b__2a() ilOffset = 0x65at <>c__DisplayClass31.<SetupMenus>b__2c(Object unused) ilOffset = 0xBat <>c__DisplayClass1a.<QueueUserWorkItemSilent>b__15() ilOffset = 0x16at ExceptionFilter.TryFilterAllCatch(Action body, Action`1 filter) ilOffset = 0xFat <>c__DisplayClass17.<QueueUserWorkItemSilent>b__14(Object innerState) ilOffset = 0x42at QueueUserWorkItemCallback.WaitCallback_Context(Object state) ilOffset = 0x1Aat ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) ilOffset = 0x8Eat QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() ilOffset = 0x35at ThreadPoolWorkQueue.Dispatch() ilOffset = 0x81at _ThreadPoolWaitCallback.PerformWaitCallback() ilOffset = 0x51
The first thing we noticed was that there was a mismatch in the update rollups installed, but then we found another workstation without the mismatch and the problem occurred.
We then applied a few patches to the workstation, including an upgrade from Outlook 2007 SP2 to SP3 but to no avail.
In a last ditch attempt to solve the issue, we upgraded to Outlook 2010 and it solved the issue. Not sure the customer will be happy with our proposed solution.

