You can register for device notifications regardless of whether the device is present.
RegisterDeviceNotification and UnregisterDeviceNotification
You can issue to the former to receive all the WM_DEVICECHANGE notifications for a specific class guid.
The wParam you then need to check for (when you receive the WM_DEVICECHANGE) is DBT_DEVICEARRIVAL, which indicates a device has been attached.
You will still need to do some checks to make sure that the device inserted is the one you are looking for, but this is down to yourself ^^
EDIT: If you're receiving 3 or 4 of the same messages after a single insert this could be caused by a driver installation, or the fact you have registered multiple times without unregistering. You will receive a notification for each registered handle.
The DBT_DEVICEARRIVAL code is 0x800 which indicates the device is attached and ready. Waiting for 0x007 could lead to "bad things happening" as this indicates "something" has happened, but you aren't sure what.
EDIT 2: Here's a link that describes the DBT_DEVICEARRIVAL event