Sure, defective hardware happens, but I think more battery problems are a result of choices rather than luck. Unfortunately with Windows Phone there are many easy ways to drain the battery faster than necessary, and no tools to help you figure out what specifically is draining the battery. The way you set settings, run/close apps, allow/disallow apps to do things, and generally use the phone will determine your battery life. All it takes is one bad setting, app, or OS bug to ruin your battery life, and it's easy to get several of those at once.
I've been getting 3-4 days on a charge with light but real use. That's no accident or blind luck. I took the time to research, experiment, observe, understand, adapt, and make tradeoffs according to my situation. I could very easily get less than 1 day if I did things differently. If you don't have the patience for this sort of thing, you're not likely to get good results unless you hardly do anything with your phone or just happen to not trigger any of things that drain battery (unlikely but possible).
This problem is not entirely unique to Windows Phone, of course. There are plenty of things you can do on Android to kill your battery too. But at least there you have tools to help you find and fix problems and make informed tradeoffs. With Windows Phone you have to test something for hours or days, make a single change, test again, and repeat over and over. If you try to shortcut the process by changing multiple things at once, you'll never understand which change had which effect. Many people come to faulty conclusions based on such misunderstandings. I hope Microsoft will put more effort into reigning in battery consumption in the future, and that starts with giving users the information they need to make informed decisions.