The failure of the headlight switch can be caused by pitting and carbon buildup on the contacts (they can also just fall apart).
This causes high resistance/low current flow through the contacts, meaning that you can get 12V at the other end, but it is very low current. Apply a load and the contacts cannot supply enough current to power the load. A multimeter has very low load, which is why you are getting a voltage reading with it.
The switches can be cleaned easily as I noted above. Go pick up a $5 can of contact cleaner and give it a try.
It's going to be either the headlight or ignition switch (don't forget to check the wiring inside the headlight as suggested).