Money, though that's not the whole story. Most European leagues fluctuate in power and noteriety but basically the teams you referenced above are some of the best in the world. Bayern is probably the most well run and financially balanced team in the world. It also helps that they are the wealthiest team in Germany by a country mile which allows them to poach the best players in the Bundesliga. Real has they own transfer market startegy built around signing stars. Here's a pretty good wikipedia entry that explains Madrid's
Glacticos. Barcelona has an incredible academy that only Ajax might rival in Europe. They produce many great players and play a brand of football that most players in Europe want to die to be part of. Also, over the last decade we have witnessed their golden generation.
However, all of this doesn't explain the lack of top players in the EPL. IMO part of the reason why you don't see the best players in world playing in the EPL has a great deal to do with how slow they were to accept top foreign players. During its first 5 years of existence, the EPL was virtually devoid of the top foreign players sans Cantona and Schmeichel. At that point Serie A and La Liga were dominant. Even today when you hear announcers discuss players on the pitch there is an inherent bias towards English players. Things started to change with the arrival of Bergkamp at Arsenal. Arsenal is almost single handely responsible for the influx of foreign players. They played a more open attacking style of football that relied less on physicality and more on finess, skill and pace. It wasn't that long ago that Henry and Ronaldo called the EPL home.