My experience might be different (or I'm living in an different universe with distorted laws of physics), but most business analysts and project managers (not program managers, but project managers or PMPs) positions I've seen are at or slightly below the average salary of programmers.
The salary gap begins to widen more when compared to the average salary of software engineers (on the software engineer's favor). The gap is even more when compared to senior EE or senior software engineers. Almost no senior business analyst or senior PMP will make the same as a senior EE or senior/principal software engineer.
A program manager, however (which is not the same as a PMP), that person will make a lot more than anyone else (and the reasons should be obvious.)
The thing that bugs me the most when I see these complaints about salaries is that as programmers (specially as junior/entry level programmers in the enterprise), we are (or were not) that special. There is nothing really in an entry level programmer right out of school that deserves a rocket scientist salary. No.
All of us that work on software started from zero. We all did.
And IF we are really honest, we know well that we didn't know crap. Being able to complete our undergrad CS course load is just the starting point. It does not make us that special or ZOMG!!!! uber-Einstenian. Really, NO!
And yet (and thanks to the ill-fated period of the dot-com bubble), we expect to make not just more, but a lot more than another university-educated person just because OH WOW, we are programmers and they are just business analysts and PMPs.
Can you spell arrogance? Newsflash - for most programming tasks in the enterprise, you don't even need a 4-year degree. Really, is that serious.
Put the time on the grind and build the experience to transition from programming to software engineering (or engineering for that matter) at the senior level. Then you can demand to make much, much, pero mucho mucho much more than a business analyst and PMP.
Get it over with - some of us are (or were) overpaid. Period.
Rant aside: reasons for a business analyst and/or PMP to make salaries close or similar to programmers that have not yet accrued the necessary time and expertise to be mid/senior software engineers (or that have still not developed expertise in a highly demanded niche area):
A business analyst is the liaison between software and systems folks and business people/business processes (which are the ones that justify the existence of your paycheck, not the other way around.) They are the ones responsible for breaking down business processes in methodical, analytical manners, as input amenable for forming requirements, the stuff you work on. They make sure that you spend most of your time programming and not dealing with the minutia of business.
Many of you think business is easy shit. If you really think that's true, God help you.
A project manager is the person in charge of juggling multiple projects (whereas you only have to juggle with one or two at the most at any given time.) He's your umbrella, and he's the one that has to do the dirty job most of the remaining unwashed masses don't want to do - to chase people down making sure they do their jobs or removing impediments to your job.
He's the one that will ask you "what are you working on? is what you working on helping moving the project along? do you have problems with your work? what are your obstacles, what do you need? who can give it to you?"...
and then he'll go to others asking the same hard questions, making sure that obstacles are removed, and making sure that you are pulling your weight on the project (if necessary.)
The number one problem I've seen in many failed projects is a lack of PMPs or a disrespect towards PMPs (specially from developers.) It is rare that I see projects fail because of incompetent PMPs, and yet one has to wonder why many programmers are more than eager to say that is the case.