What I think you've noticed is Windows inherit ability to give you completely worthless information simply because a driver is installed. "If the driver is there, who cares about the device!"
I would think (stress _think_) that API calls would prove pretty much useless as you have discovered so far. Unfortunately, as WizardFred suggests, I'm not sure you can actually tell if the keyboard is plugged in without some kind of key logger...which could then produce false alarms.
Might not be much, but here's a thought: what happens if you try to set NumLock through the API and then read its value back? If there is no keyboard attached, would NumLock toggle? Just a thought.
Good luck (and I'll try to think of more ideas),
"Live long and PROGRAM......or at least do _something_ with all that time...!"