I read this thread earlier, but now that I was watching a "relevant" episode of Voyager, I figured I'd chime in.
Basically, in the episode I'm watching (Flashback, S3 ep 2) it's established that Tuvok was on his first deep space mission 80 years ago. He was an ensign at the time. His long career was referenced in some earlier episode as well, but here it is examined in more detail. Now, consider that he is still a lieutenant at the time the episode is taking place. While he apparently left Starfleet for 50 years at some point, that still means that in 30 years of service he's only advanced a single rank (of course, his next promotion isn't too far off, but that's besides the point). And given his usual Vulcan proficiency and efficiency, you can assume his lack of advancement wasn't due to not performing his duties exceptionally.
Of course as was mentioned, there's other examples of long careers with not that much advancement, such as that of Data. Of course him being an android and being mostly considered as property for most of his existence was a major hinderance, but given that he had a Starfleet rank to begin with makes it relevant.
But in all this, one also has to keep in mind the overall structure of an organization such as Starfleet. There's always much less higher than lower ranks. You could say the ratio of "brass" compared to lower ranks will probably remain roughly constant. As such, for example let's say there's 1000 ensigns that graduate the same year. It stands to reason that not all 1000 can be admirals at the end of their career, because it would saturate the higher ranks. Therefore, those 1000 officers will end up being various ranks in the hierarchy, even after long and possibly distinctive careers. Think of the ol' gruffy US army/navy/whatever drill sergeants you see in movies and which most likely exist in real life as well. Some people just are fitting for a role, and they may stay in the role for a long, long time, which may well mean a lack of rank advancement as well. You won't be seeing a "drill general" barking at the men in a training course day in, day out!
There's also the fact that they are effectively the sole Starfleet presence in the Quadrant, and as such, they have only their limited number of personnel. Giving too many promotions would serve no purpose, as basically the command structure would remain the same regardless. While it could be said that Harry Kim's performance during the journey had merit enough for a promotion for sure (in an early S2 episode Janeway even commented on Kim's performance as they were crawling in the Jeffries tube while the ship was "imploding" in the anomaly/phenomenon, saying that it was far above her expectations), the promotion would have changed little. All this merit was also on record, and once they'd reach home, promotions etc could be handed out accordingly and many people would likely be assigned to serve in other locations.
With all that said, I suppose it wouldn't have hurt anyone to make Kim a lieutenant either. But the lack of advancement is not really a flaw in itself. Also the higher rank you are, the more of a leadership position you get generally speaking. While Kim is certainly proficient in his role, I wouldn't say he's a leadership kind of guy.
(Whoops, I did it again

Damn walls of text...)