I guess Starfleet has an Affirmative Action Program even in the year 2370. Picard got screwed for that promotion. :)
Nah, you don't promote someone who locked horns with command as often as Picard did. (Plus, you know the whole situation with his chief medical officer had to leave a black mark on his fitness report.)
Kirk got to be Admiral because it was a different era that called for cowboy diplomacy. Besides, it was either that or shoot him, and Starfleet didn't have the stomach for the latter.