There are many reasons, but the best teams with some top players are the ones that win World Cups. If 2002 was a Euro year, England may have another trophy right now.
- England have lacked strikers to score the goals. They arguably have Rooney now, but that's it. Owen was always injured. They also had a couple of in-form strikers but poor management meant they never got played, and when a tournament came up they were left with no experienced international goalscorers because they'd play the same players on name alone. More below.
- England never understood friendlies. While all the other top teams were using it to get new players and goalkeepers experience, and getting the team familiar with plan Bs and plan Cs, England were treating them like competitive matches, playing the same freaking full-strength line-up every time. This led to an insane going through the motions for a few years where England would always go behind, then make a comeback in nearly every friendly. Media and managers called them a waste of time, and England certainly made them a waste of time. This also led to decisions like 2006 vs Croatia, where McClaren dropped his keeper and replaced him with a rookie, because he hadn't been used in friendlies. Or most tournament squad selections where the managers were clueless as to who else to bring because they didn't know anything about the other players.
- Awful management. The last competent manager was Glenn Hoddle.
First was Keegan, who isn't exactly a master tactician.
Then they had Sven, who simply isn't a World Cup challenging manager to say the least, perhaps because he only follows the money. He has no interest in the teams themselves. If there's money or women, he's there, even if he's already rich or already with someone. He had a good run with Lazio and he's been living off that ever since. He hasn't just flopped at all his other jobs, but completely destroyed the teams. For example, his next international job was Mexico and he managed to nearly get them knocked out in the second round of qualifying, scraping through on goal difference. Soon as he left, they immediately won the Gold Cup, beating the U.S. 5-0 in the final.
With England, he was happy scraping through with 0-0s and 1-0s, beating teams below them and losing to teams above them. So they lost to 10-man Brazil and left 2006 with a whimper.
Next was McClaren, who backed his out-of-form keeper only to change him with a rookie on a rainy night in the deciding match. What happened was inevitable and predictable.
Then Capello, who seemed to have an aneurysm and turned from a top manager into Dave "4-4-****ing-2" Bassett.
Roy Hodgson has done an alright job given the players he has and has picked well, but has fallen foul of friendlies as above. Maybe the removal of friendlies will fix it, maybe it'll make it worse.
- Choking. England don't want to win. They're scared to. They'd much rather go behind, then if they lose, they lose. If they draw or win, they've shown 'heart' and 'fight'. Winning outright means they'll be expected to win again. It's a subconscious thing.