I second a focus on soft skills.
I went more the IT route, building .NET web apps for internal customers. My coding skills were just slightly better than average. My salary was definitely above-average for my position. I took a substantial pay cut to work for a non-profit; within 2 years I was making more than my boss and they sort of threw money at me until they hit the hard HR cap for my position.
What set me apart?
*I have mad organizational skills, zero tolerance for the waste caused by poorly run projects, and an inability to see stupid without fixing it. I parlayed this into PMP certification (project management professional), mostly so I have credentials to point to when someone questions why I revised all the procedures.
This means that my value is WAY more than my code. I make my whole group more efficient, which makes my manager look better, and my coworkers are (mostly) happier because they don't need to spend so much time on rework or tedious stuff.
*I specialized in data. I can code, but I LOVE databases. Most developers do not feel this way. Their code reflects that.
*I am nosy as hell. I want to understand the business. I want to understand how this decision affects that process. I want to know how all of the pieces fit together. I ask lots and lots of questions. I saved the company a lot of money because I could tell them "this requirement doesn't make sense because of business process ABC/ if we do this we need to change Z, Y, and X, or we'll be madly trying to rewrite it the week after go-live/ etc". It's better to have someone understand this up-front than to discover it all in integration testing, or, worse, after go-live.
*I am a good teacher. I volunteered to mentor new hires, I created and led training classes for end-users and other devs, and I organized developer knowledge-sharing sessions. One of my bosses told me that if I couldn't turn around an under-performer in 6 months, no one could. To prove it, they handed me all the underperformers. [This is not necessarily a good thing - I got a little burnt out trying to keep projects afloat.]
*I know my own strengths and weaknesses and partnered with people who complemented those. I worked with one guy for 7 years - we were a dynamite team. Even if we weren't on the same project, we constantly bounced ideas off each other. We made each other better, and we wowed everyone when we were assigned to the same projects. Not because we were both crazy awesome, but because between us we could cover almost everything that came up.
If I were more driven, I could be making the 160k+ salary. To deal with burnout, I moved out of coding and into report-writing. I almost feel guilty because I'm making $120k and my productivity level is about 50%. My bosses are thrilled with my output and I get to surf the forums for a part of every day.