Remove all udev rules and the problem is solved.
I had this issue today on a new B+ with 1.0.7, googled and found this page.
I noticed it did not see eth0 either - a problem I had when building a Slackware Arm image for the Pi's.
To fix the issue I removed the MicroSD card, mounted the root partition /dev/sdc2 to /usb on another system and ran:
for a in `find /usb/ | grep -i udev` ; do rm -f $a ; done
Crazy? No, screw udev, I hate it. I'm glad it's there for others to use but I will shun it until I need it.
Anyway it fixed my issue, USB keyboards work fine on the B+ and eth0 came up as well.