A good advise for one who wants to do the transition would be to just to dare to dream. Suggest products, get involved in all stages of the product's lifecycle. Be proactive, and after a while go and ask to be a PM. It's not a promotion as PM are not superior to devs (except from me). It's like a new role in your career, much different from a programmer.
In addition I would strongly suggest to build something on your own. Just do it, and you will learn a lot about specifying a product, about marketing, about managing the project of your own. If you come with this on your record, you are like 100 times in a better position.
Forget about MBA. It is useless and just dumb to do it. Go get some good books from Amazon, read 37signals series and other books which Amazon will recommend you in this area. God forbid the missed souls of the MBAs, but there is a reason Google don't hire them.
1) Internally apply for a Product Management job. Expect to have put in at least 3 years within the company and make sure you know the business domain better than most other engineers. Play politics successfully and hop on the first open PM position available. You may have to pick a product in pretty bad shape as a proving ground.
2) Build your own product either on the side or quit your day job to focus on it. Make sure it's something a bigger company like Yahoo, Google, Facebook, Salesforce, etc would be interested in. Make a real go at building a business, and doing the hard PM work. Hire others to do the engineering work so you can focus on the PM skills. This may also take 5 years before you land your dream PM role. If you play your cards right, you may land in a PM role with a nice exit as well.
3) Go get an MBA from a top school that Google, Facebook, and Microsoft actively recruit from. Make sure your program has a focus area on Technical Product Management so you can get into the right recruiting circles. This may be a faster track, but expect to lose 2 years of income and rack up a lot of tuition debt to make it happen.
Product management shouldn't be a special job for high-horse do-nothings with MBAs and connections. It should be a concern for all engineers; something everyone should care about and be able to influence.
It is pretty depressing that in most software companies, engineering makes little to no decisions about features, market strategy, or operational efficiency. You really have to get out of engineering to have any influence in those areas.
With engineering being so lucrative, you see a lot of self-selection where the weaker engineers end up making these transitions, which only makes the whole situation worse.
Become [executive's gender of interest] and learn how to sit on a desk.
Are you fucking kidding me? I don't have enough karma to downvote you, someone please do the honors.
That said, if you don't think 95+% of workplace favoritism is based on sexual desire, you're misled. That's especially true in the non-technical/subjective roles where ability is so hard to evaluate.
Most corporate executives did their 20s wrong and want to Feel Like A (Wo)Man now that they're older. Which means that for non-tech/subjective proteges they tap either (a) young, attractive people of the opposite sex who give them a "hip" image, or (b) unscrupulous young men ~20 years their junior through whom they live vicariously.
Yeah, that's bullshit. Maybe in certain sectors, but unless you have something to back that up, I'm calling bullshit.
Experience.
Larger companies tend not to be that way, though. I saw a ton of that stuff in VC-istan, but none at Google or in the banks.