Nevermind my previous, I've found the REAL issue.
In Wiimote.cs, FindWiimote() function:
after found = true; line add
The problem was that at some point (e.g right after reboot, when wiimote still remains on devices list (Start->Devices and Printers in Win7) and isnt really paired to PC), subsequent wiimoteFound() callback call throws an exception (can't read data)
and thus these handles stay open. So after you called Connect() once, you can't remove device properly (it leaves a "HID input device" record on the list) until you close your app. With the fix above unpairing after Connect() works like a charm.