I too had that problem, and I think I now know what caused it.
Basically, when you join a firm at say age 21, you will forever afterwards be the 'newbie' in the eyes of your managers. When you get to 31, they still see you as the 'newbie', even though you're 50% older and now have 10 years experience under your belt, and in all probabilty are doing a totally different job to a totally different standard to when you first joined. Baggage is REALLY hard to shake off.
Some say that moving firms is the only solution. That way, you drop the baggage and get a new-founded respect within the company.
In other cases, some firms just don't "do" promotions. Sure, you get 4% here and 5% there every year, but when was the last time you ever saw anybody promoted? These firms just drag you back, bit by bit, until one day you wake up and realise you're paid 40% less than the ads for similar positions on monster.com.
It's a tricky situation. Some will say "take on more responsibilities, be more proactive, and prove yourself!" The truth is, however, you're probably already doing all of that, and quite possibly well in excess of what can be expected from somebody on your paypacket.
I think the bottom line is to ask yourself whether you like where you are. If the firm is good in other ways, then consider staying. You can put up with bad colleagues, pressure, or low pay... but not all three simultaneously!
The acid test for me would be if I thought my managers were too self-centered or were doing anything with bad intentions (e.g. holding me back deliberately for whatever reason). As soon as I was 100% convinced of either one of those, I would be off like a bolt of lightning. To me, loyalty has to work both ways in order to be viable.