If you're a good developer, it's fairly likely that you'll learn and be ready for challenges faster than a single company can offer them. In companies, you wind up with an entrenched seniority structure that makes decisions, and there are generally fewer openings for senior guy, lead, architect, manager, etc than at the level below, so it can turn into a waiting game.
You also have to contend with the dead sea effect and the motivating factors for developers to leave that come along with it. It isn't just a matter of skipping around for better pay and titles -- it's that dead sea types often default into positions of authority with enough tenure at a company, limiting the opportunities for growth that you might have beyond the better initial title that you negotiated.
Mind you, I'm not suggesting that this paradigm is universally true or that it's necessary to switch everywhere to advance. I'm just trying to explain what you'll probably see happen in a career and why you'll often find yourself ready for additional responsibility but not rewarded therewith. For ambitious people, when this happens, they tend to dust off the resume.
Personally, I would suggest looking hard for a company that will put you in a position to have your responsibility grow on a strict basis with your merit as much as possible, which will limit this effect. Hopping around jobs is (probably, I've not done in much) tiring and it starts to be a drag on the resume.