location, location, location!... Its not just about real estate. When I said "around here" I was thinking Boston and of the first hand knowledge I have as a hiring manager in software engineering. Boston is not the highest but we are probably not far behind silicon valley, NY, etc as as expensive areas goes.
Joful makes some good points as well. If you want to progress beyond entry level, like it or not you have to develop a sense for office politics and try to judge what the organization wants in senior staff. In my company we have a technical track that goes all the way up to technical VP level - with salary and bonuses at each level that's competitive with (if a bit lower) than the managerial track. However having been on the hiring and promoting end I will say if a team member just wants to sit in their office and do purely technical work all day you are never going to make it to the consultant, principle, fellow, etc level in the technical track in my group. When I consider somebody to move up to thsoe levels Im looking for them to play a role at the team if not organizational wide level, being a mentor to junior technical folks, training, setting architectural direction for entire product lines and designing infrastructural the rest of the engineering staff builds on, creating technical standards and guidelines for the group to follow, and so forth.
In industries with high levels of outsourcing that also means you better pay very careful attention to what functions are kept local and which ones are going offshore, and plan appropriately. I can also add that there have been multiple times when I have actually passed on the candidate with the most impressive technical background to pick somebody who we feel will be a better team player and more open to learning new things. Its often hard for us technical types as we tend to not have the personality type for it, but you have to get out there, stick your nose into company politics and judge where things are going, and play the game.
Bottom line, when you get past the first 2-3 levels in a technical organization - being able to do the math or write the code better than anyone else is no longer the sole, or even most important factor in how you will progress.