Creating major internal conflicts
From David Farland, a creative and easy way to create complex characters:
Give your character a major internal conflict. By that I mean, pick a word that describes your character. For example: He’s compassionate. Then find another word that can also describe your character, but make it a polar opposite—terrorist. Now, look for ways to reveal both sides of you character. For example, your protagonist might be at a French Restaurant. He sees a mother and a baby, and tries desperately to drag them away from the restaurant—just before it blows up. He saves them! But how did he know that the restaurant would explode? Because he set the bomb. Giving a character a dual nature creates an instability, a lack of balance, that probably can’t stay forever.
Read the rest here!