I have honestly had enough Windows Phones (went through 3 or 4 920 and 2 1020s) to determine that the battery life issue is not a faulty hardware issue. Here's a compilation of things I've noticed, or tried on the web that appear to be true:
1. Background Tasks
From what I can tell, there is definitely a bug with how background tasks are handled. If you have even 1 application permitted to run in the background, no matter what it is (even just a battery app!), you will often (and likely inconsistently) lose up to half of your battery life (likely 25%). From what developers have told me, background agents might get stuck in the background pretty easily.
2. Installed apps
If you have installed a lot of apps that you do not use on a daily basis, you will find that you have significantly poorer battery life. Windows Phone appears to allow apps to run in the background immediately after they are installed or updated until you open the program, then go back to background tasks and explicitly block it. Generally speaking, if you don't use the app, uninstall it. Every week or so, you should also go down your list of apps and make sure you have opened each one at least once (since installation or upgrade). Ensure inside each app that you turn off Live Tile updating (if not needed) and disable any background tasks internally. Then check your list of background tasks in settings and ensure that they are all blocked (see point 1).
3. Turn off wireless services when not in use, or in low signal
GPS, WiFi, Bluetooth, NFC, and even 3G/4G data. If you aren't using it, turn it off. The important thing to remember is that it may not be in use, but the device is still trying to use it. It's searching for WiFi networks, searching for Bluetooth devices, trying to connect to an NFC device, etc. Additionally, if you are in a poor reception area for any of these services, battery will plummet. This seems especially true for LTE and cellular services. Starting with the Nokia 808, any Nokia device I've owned seems to have terrible battery life in low cell reception areas. This applies to WiFi and Bluetooth as well, so if you know you are far from the base, shut it off and use something closer if possible.
4. Always close apps
It seems odd that if you disable background tasks, then navigate away without backing out that a program might continue to use battery. However, this appears to be the case. If you leave a program running and just turn off the screen, battery will suffer. This seems especially true with apps such as Nokia Camera, Nokia Drive, Baconit, Readit, and a few other normally CPU intensive programs.
5. Battery save mode
Definitely leave it set to "When battery is low," which will automatically block anything from running in the background, limit syncing, dim brightness, and likely a bit more when your battery is below 20%. This is very helpful and highly recommended. Also, as a last resort, if you are noticing a rapid decline in battery and don't need up to the minute email notification, switch it to always on.
6. Glance, Double tap to wake, high sensitivity
Those nice little features of Nokia phones are great and all, and each one may only use a few milliamps, or even a few fractions of a milliamp per hour, but that all adds up. Disable these when you're trying to squeeze out every last bit of battery.
(note: there are likely equivalent, and similar tips for other manufacturers, but I have only used Nokia)
7. Xbox Game synchronization.
I don't know how many people are that into mobile games, but if you can, turn off all of the options in xbox games settings to disable the highly battery intensive syncing of your game information.
8. Email accounts and other syncing
Be very mindful of how many accounts you link to your device. It's nice to get all your email accounts on your phone, but if you really don't need to respond from that address, just forward it to one account and link only that account to your phone. I have only my Live account on my phone, and all of my other emails accounts forward to that account. I get all of my mail on my phone, and my device only has to sync one account (and as items arrive). If you have to have other accounts on your phone to send from, consider adding them as manual sync only, forward to your one account, then send from that email when you have to. Might be a little annoying to switch back and forth, but syncing definitely uses a lot of power. This also applies to Facebook accounts, Twitter, and anything else that needs to stay up to date. Remove them, or limit how often they sync to save battery.
9. Be mindful of your usage
If you let your phone sit idle and you're only dropping 1 percent an hour or less, chances are, there's absolutely nothing wrong with your device. If that changes rapidly on days that you use it, then you just use it a lot. Keep in mind that if you browse the internet a lot, keep checking your email, read reddit (big usage for a lot of WP users!), and especially play games or stream media, you will suck your battery dry. If you do any of these for about an hour, it will likely cost up to 25% of your battery (sometimes more with some games).
Generally speaking, if the screen is on constantly, you'll likely get between 5 and 10 hours, depending heavily on what you're doing. If you're playing a heavy 3D game continuously, it could be even less.
These are just some random tips that I've found. Some of them are very unfortunate, but it's really not better on Android. iOS I am uncertain about. Also, your mileage may, and will vary, mostly dependent on what apps you have installed, and how you apply the tips I mentioned. Following these tips, on my usage, I can easily get 15 hours. My usage is Reddit heavy, sms heavy, and usually includes a good amount of web browsing, and a call here and there.
EDIT: Grammar/spelling/added a couple things.