Let me first give you the good news. Hancock is a good action movie. This is an interesting story of a homeless guy who happens to be a superhero, he recklessly rescues people and prevents crimes -- after each rescue or intervention, the city is left with millions in unnecessary and usually easily avoidable damages. Hancock is a drunkard and is constantly grumpy.
Things start to change when he saves the live of major cutie Jason Bateman. Jason is into public relations and offers to change the image of our super hero.
Now the bad stuff. The first homophobic content comes right on the first scene. When Hancock is busting these three criminals, he breaks into their car and says something to the effect that he was not even judging the fact that there were three dudes in the car. He said it in a way that conveys his disgust with the all-dude situation. Bad. Then, later, Jason is trying to help him choose a super hero outfit by showing the cover of a few comic books. To every single one of the outfits Will Smith reacts: "homo", "homo in red", "Scandinavian homo" and so forth. Again, really bad.
I concede that in those two scenes, Hancock had not been "saved" and he was still the baddass idiot; nasty and in bad behavior. But we are clearly made to be on his side at all times and we never forget that this is Will Smith, whose shit is not supposed to stink even when he's playing an idiot. Also, to be a baddass, do you need to be homophobic?