The star power of an athlete is only as powerful as the ability of the star to keep his/her name in the news. Olympics are held once every four years which limits the ability of these Olympians to stay in news. This in turn limits the Olympians ability to earn more as once Olympics are over.
This problem is not of Olympics but any sport that has just a few major tournaments. Consider Cycling vs Golf, sports that have produced two greatest athletes, Lance Armstrong and Tiger Woods. A quick google search on these two names shows following statistic - Lance Armstrong - 4.3 million links, Tiger Woods - 17.2 million links (I know this is only a surrogate to earnings but it makes the point). Is this because of Tiger is a better sportsman?
No, the main reason seems to be Lance participated in a sport that had one major tournament - the Tour de France. This meant that Lance had to work hard all year, but his name only became newsworthy to US audience once a year.
Contrast this with Golf where there are twenty major tournaments each year that serve as a platform for Tiger Woods to keep his name in the limelight.
Still, Lance Armstrong was quite successful commercially because Lance lifted the sport of cycling into the consciousness of millions. If Golf is such a newsworthy sport today its because of Tiger Woods lifted it and made it interesting to millions. There are other examples - Michael Jordan did the same for Basketball and Pete Rose for baseball.
Michael Phelps is no doubt one of the Greatest athletes of this generation. True he is limited by the sport in which he plays, but no more than Lance or Tiger when they arrived on the scene. If Phelps is truly great, he will similarly lift swimming from being a moribund sport to a new level of sexiness, attractiveness or greatness. In return the businesses will reward him with contracts worth millions of dollars.