1) The transition from comic book to movie destroys part of what makes the superhero fun in the first place. Comics are inherently abstract, with crazy proportions and wacky costumes. When you try to take this abstract character and make it realistic, it often becomes somewhat silly. Take Superman, for example. In the comics, Superman has an incredibly buff physique with gigantic muscles, all encased in blue and red spandex that fits perfectly to show off his impossible anatomy. But no actor has muscles like Superman, and no material can mimic his comic costume. So, in the movies, Superman ends up looking less dynamic and more doofy.
2) Superhero movies tend to focus way too much time on the alter-ego at the expense of the superhero. In the comics, the heroes are virtually always in their costumes; when Bruce Wayne is talking on the telephone in the Batcave, he's in his Batman costume. When he's on the Batcrapper, he's Batman. That's because the artists realize that it's the costume that's interesting, not the person. But superhero movies focus most of the screen time on the alter-ego. That might be because the actor is so famous that the filmmakers want to showcase him. Regardless, when I go to see a Batman movie, I want to see Batman, not Christian Bale.
3) The movies all have the same formula. It's so transparent that you can write this formula as a computer program, like the one below. (The lines preceded by the apostrophe are comments describing what's happening in the program.)
' Call the function SuperheroMovie whenever you want to
' make a new superhero related movie. Just pass in the
' variable "superHero" for whichever hero you want, i.e.
' Batman, Wolverine, etc.
Function SuperheroMovie (ByVal superHero)
' The hero starts out as just some normal dude. When
' tragedy strikes, he becomes a superhero.
alterEgo = normalShmoe
superHero = alterEgo + tragedy
' The villain is a friend or mentor of the hero's alter-ego. This
' ratchets-up the tension between the characters and makes
' their fighting tragic and ironic.
villain = alterEgo.friend OR villain = alterEgo.mentor
' Our hero questions the ethics of his decision to become a
' superhero. This is exasperated by his involvement with a
' hot chick.
doubts = alterEgo / (morals + hotChick)
' The hero eventually battles the villain. Inevitably,
' he loses his mask, which makes him appear more vulnerable.
' The reveal also surprises the villain.
battle = (superHero - mask) * (villain / surprise)
' Combine all the elements together and you have a
' superhero movie!
movie = superHero - doubts + villain + battle
4) Superhero movies are always limited by the expectations forced on superheroes. They can't make any real mistakes or do anything morally questionable because doing so would destroy their "hero" status. Even villains are limited in what they can do. Sure, they can kill people, but they certainly can't do anything really disturbing, can they? That's why you won't see a villain as creepy (or as well-developed) as Hannibal Lector in a superhero movie. And that's why both the superheroes and the villains in these movies will always be cardboard cutouts. That wouldn't be such a problem if the filmmakers intentionally made the superheroes and villains into caricatures. But the filmmakers are intent on developing "realistic" characters, never realizing they can't get to any real depth because they are limited by the superhero archetypes.
There are a scant few superhero movies that don't follow these trends. The Dark Knight is arguably the best superhero movie, and I would say this is because it has the least number of the problems explained above. On the other hand, it still has many of them. I have high hopes that next year's Watchmen will finally break this superhero mold, though.