Heroes are hard because your stuck with them throughout the entire story. Its hard to make people like them, but still make them realistic. I'm no expert, but I figured out a quick and easy way to get people hooked on your hero.
Make the hero suffer some sort of injustice.
It can be caused by the villain or not. Its good to pick something your reader will sympathize with. It can be big: you could have the parents be murdered by the villain and he is forced to work as a slave on a grueling hot island. Or it could be smaller: he's small, he's bullied, his nose is too big. (Cyrano de Bergerac anyone?)
"Star Wars" does this. Luke is stuck on a planet he does NOT want to be on while all his friends are leaving and having adventures. His dad was a warrior, but he's (Luke thinks) dead. He has no clue who is mom was. He's stuck on a farm with his aunt and uncle. I'm sure everyone (cough, teenagers) has felt this way at some point.
"Lord of the Rings" does this too, but it is much less noticeable. Frodo has a pretty good life. He lives with his favorite relative, Bilbo, who has made him his heir. He has plenty of friends who love him. True, his parents did die when he was just a baby, but, lets be real here, he was raised in Buckleberry. I wish I were raised in Buckleberry.
So where did the injustice come from? Easy. Frodo did not ask for the Ring. It was given to him.
Make the hero's response to this injustice be noble.
The whole injustice thing will be useless if you don't make the hero respond like a hero to it. If you have an orphan who kicks puppies and robs old ladies, you have just made yourself a villain. A hero has to be a hero despite his circumstance.
In "Lord of the Rings," Frodo becomes the hero when he follows Gandalf's advice and takes the Ring to Rivendell. He did not stomp his foot and pout about it. He didn't take Sam aside and try to convince him to take the Ring. Frodo got up, left his home, and took it to Rivendell and then later all the way to Mordor.
"Star Wars" takes a different approach. Luke is not really faced with the choice of doing anything noble until his aunt and uncle are killed. The he had some choices...he could stay on Tatooine and go to his academy and become a pilot like all his buddies (that would be the easy route) or he could go with an apparently crazy old hermit on a hair-brained mission to rescue a Rebel leader from the most powerful Empire the universe had ever known (need I mention that that is the hard way?) And Luke chose the hard way. That makes him a hero.
Give your hero a dark side.
Now, I'm not saying a villainous side. I'm saying a dark side. Everybody, unfortunately, has one. Its natural, its because of sin. Once you are a Christian, you have the capability of getting rid of your dark side, but its hard and we all know it.
Nobody likes a perfect hero. Nobody likes someone who is a know-it-all and always makes the right decisions. Give your heroes flaws. They can be big or little.
Lets be honest, Luke is whiney...at first. Especially in "A New Hope," Luke spends a lot of the film asking naive questions and annoying Han. He's also headstrong and reckless. Throughout the three films, Luke grows considerably. But even then he's not perfect. Even in the climactic battle between him and Darth Vadar, he struggles with his dark side. Luke is one of my very favorite heroes, and he is far from perfect.
Frodo is not whiney, but he does get tempted. He is tempted by the Ring many times, and he often fails. He's also stubborn. He refuses to listen to Sam's warnings about Gollum. Frodo is not perfect, but he is my very favorite hero. (Josten raises his eyebrow, Ember pouts, Aralyn glances up from her sword, Julia bites her lip)
Heroes are tough. (I smirk at my quartet of weirdos) And I still am not very good at them. If you have any tips, please share! :)