I contacted Microsoft about this problem and that seemed to have paid off. At least I’d like to think it did :). Although I didn’t get a confirmation of a resolution back from them, the Windows group is difficult to contact directly and I had to use an intermediary.
An update delivered through Windows Update solved the problem. The noticeable 2 second delay before the crash is no longer present, strongly suggesting that the IsWindow() deadlock got solved. And the program shuts down cleanly and reliably. The update installed patches for Windows Defender, wdboot.sys, wdfilter.sys, tcpip.sys, rpcrt4.dll, uxtheme.dll, crypt32.dll and wintrust.dll
Uxtheme.dll is the odd-duck out. It implements the Visual Styles theming API and is used by this test program. I can’t be sure, but my money is on that one as the source of the problem. The copy in C:\WINDOWS\system32 has version number 6.2.9200.16660, created on August 14th, 2013 on my machine.