There's an old saying: "I'm not looking for the perfect man, just one with faults I like." (no clue anymore where I heard this, but it always stuck with me.)
Perfection is kinda boring. We might want to be perfect, but when everything always goes our way and nothing ever surprises us we yearn for the unexpected. Imperfection is so much more intriguing because it's unpredictable. Everyone has flaws, and those flaws are what make us interesting and unique.
This is even more important when it comes to characters. The flaws are what allows your characters to make the mistakes and the bad choices that lead to compelling plots. But picking just any old flaw isn't going to cut it. You want to choose flaws that add to your story.
I'm So Scared: Give Them Fears
Fears are great things to play off of, because you can use them as excuses for your characters to make the wrong decision. Everyone is afraid of something, even if it's irrational. You probably don't want to make it the exact thing your protagonist has to face to win (unless that's the entire point of the story) because you don't want to be too convenient or coincidental, but something that hinders the protagonist in their pursuit of their goal can go a long way toward causing trouble.
It's also fun to show those flaws in action, so when the protagonist gets close to doing X for plot reasons, the reader can see he's probably going to mess it up. They'll worry, because they can see it coming, but hope he'll realize (or has learned) and will make the right choice at that oh-so-important moment. And of course, sometimes you can swing it the other way and let them overcompensate for their previous mistakes, and mess things up even more.
I Hate That: Give Them Prejudices
Prejudices are another good flaw to exploit. It can be a full blow racist trait, or just a dislike of something based on past experiences. For example, if your heroine had her heart broken by a blue-eyed blond surfer, she might react badly toward them when she first meets them. This is great for when you need your protagonist to instantly dislike another character for plot reasons and they have no good reason to do so. Starting off on the wrong foot can lead to all kinds of trouble.
But That's How I Roll: Give Them Strong Traits
Even positive traits can be flaws in the right situation. Refusing to give up no matter what could be quite troublesome if faced with a problem that requires them to give up to win. Always doing the right thing can work against you if dealing with people who never do what's right. Being forced to go against your nature can add wonderful internal conflict to an external goal. (I use this one a lot in The Shifter)
And the most important reason to give your characters flaws -- flaws help make them likable. The little quirks that make them feel so human and real, that allow readers to relate to them and root for them no matter what they do. Remember, not all flaws are bad. Some are those endearing traits that stick with you long after you've met someone.
You don't want to make them too flawed though. Broken is good, but utterly dysfunctional can steal all the sympathy from a character. It's like being perfect, because someone who always makes the wrong choice and always has things go wrong is just as predictable as always having things work out. You want to balance the redeeming qualities with the flaws, so readers never know which side is going to make the next choice. The character might have the potential to make the right decisions, but the possibility they'll mess it up is high.
So, as you create your characters, don't forget to give them flaws and issues that make them three dimensional.
Because after all, nobody's perfect.