What makes a bad requirement? One that's not there
I see a lot of good answers here about the a bad requirement being one that is miscommunicated or half-baked. And they're probably correct.
But for me one of the worst types of "bad requirement" is the one that's simply missing. I see this time and again in systems. A day after going live, the users say, "Oh, what about XYZ? We really need that." To which the project team responds, "XY what? We've been working on this project for a year and NOW you tell us?"
Why is it bad?
This is a killer because now everyone has to scramble and rush out a solution, not that the average developer needs any help promoting half-assed things to production, but you just know it's going to spell lots of production support for all the poor people this 'solution' is handed over to for maintenance...you know, the ones that didn't get project bonuses.
Again, this is not a bad requirement but one that was never a requirement to begin with. That doesn't mean it's invalid; it most certainly could be critical. But between the rush to get things done and an aggressive project pace, and the fact that we're all humans and we make mistakes, this was overlooked.
How do you avoid it?
You could spend more time up front and hope a sharp subject matter expert picks up the missing gap. A more effective and more costly method is taking the time to engage what some call a "model office" phase. This is like a system test, but designed to simulate real life conditions. The testers aren't just verifying that the system delivers correct output for 1 + 1, but that all its parts work within the context of the business process.
This is a hard sell of course. Many projects will give business analysis and testing the short shrift in order to uphold the almighty metrics of "on time and on budget". But if you want to shake these missing requirements out, you have to let the user run with it. It's then that they'll recognize things they took for granted in a verbal requirements definition session. Agilists would add that this test needs to be done as early and as often as possible to uncover these risks and give the project team time to identify their priorities and make adjustments where warranted.