From what I can tell in a cursory Google search, in reality a typical military tour of duty at a single posting can be anywhere from 6 months to 3 years. Heck, in real life a Navy captain would only command a ship for maybe 6-18 months before being rotated out and replaced with a new captain. The WWII-era USS Enterprise
CV-6 was in active service for eight years, in which time it had twelve different captains
, not counting the commander who was its CO during repairs at Pearl Harbor in July 1944. (That's right -- a ship in port can have a different commanding officer than it does when it's in service. After all, the captains would be needed elsewhere.)
So eight years is, yes, absolutely, plenty of time for Kirk to rise from lieutenant to captain and have at least one command posting. (And TMoST said that Kirk was at commander's rank when he got his first starship command, a destroyer equivalent.)
While I definitely agree with you about short tours of duty and transferring officers around, and I think that Star Trek officers should operate under the same general concepts, it's internally inconsistent with the show.
When you have officers such as Picard who commands the Stargazer for 22 years, followed by a brief hiatus and then the Enterprise-D for 8 and the Enterprise-E for another 8+ years, its inconsistent to show young officers climbing the ranks so quickly.
Every officer under Picard was shown to be unbelievably talented, and if their goals were Captaincy, they would have all been plucked. Instead, you've got characters like Riker who remains at the Commander rank for 15 years, or Data who remains at LtCmdr rank for nearly 20. La Forge is a quick-starter who is promoted to Lt Cmdr in 9 years, but remains at that rank for at least the next 14 years (canonically, at least).
All of these characters who ascend to a certain rank and then stay put are essentially roadblocks in the careers of young officers who hope to rise rapidly.