B. I haven't seen a VB6 implementation, but I do have VBScript and C# implementations for it at work. (The C# one would be very easy to rewrite in VB.NET.) They both use the Windows Management Inteface, the Win32Shutdown command in particular.
With the way you're talking about it, I'd use the VBScript version because in Windows, you can specify a logon script that runs before the desktop gets loaded, i.e. right after the user logs on. I haven't done any GUI stuff in VBScript, but I can give you the functional code.
If you go with VB6 or .NET, you'll have to rely on a start up entry in the Registry or the Startup group under All Programs. GUIs for those are easy (and you can capture when they click on the X).
If you want the code, send me an e-mail at the address in my profile. I won't be in to work until Monday (I'm at a mind-numbing class right now), so I'll get it to you as soon as I can.