George stays with Lennie because he values his friendship and takes care of Lennie. It may seem that Lennie needs George more than George needs him, but in actuality, they both need each other equally. George made a promise to Lennie's Aunt Clara, who raised Lennie, that he will stay by Lennie's side and take care of him, and true to his word, he becomes Lennie's guardian.
At first, George feels obligated to protect Lennie to honor his promise to Aunt Clara. He also knows that Lennie basically cannot survive without him, due to his naivety and innocence, as well his intellectual disability. He understands that he needs to be there for Lennie, because Lennie doesn't have anyone else besides George to take care of him. As time passes, however, George begins to see Lennie not as someone he's forced to spend time with and look after but as a good friend and companion that he likes and feels very protective of.
Some argue that George behaves like a parent at times, but the more accurate description would be that George behaves like an older brother; he appreciates Lennie and tries to keep him safe and makes sure that they both stay out of trouble. In the end, George's morality and his sense of responsibility, and his love for Lennie, is what drives him to do what he believes is the right thing. He kills Lennie out of a sense of mercy, before Curley and his men come after him, to save his friend from a more painful death.