My group rolls new initiative each round. That prevents the lockstep loop you mentioned. Occasionally, you wind up with someone acting last in one round and first in the next, but it all balances out.
When I DM, I go one further and use a little program I wrote to roll initiative for everyone. Not only does it change each round, but the players (and their foes) don't know exactly when someone else will act.
It makes combats feel a bit more realistic and chaotic.
Yes, sometimes the same player/monster can roll high one round and low the next round (or vice-versa), leading to acting twice quickly followed by a potentially long wait. We all understand that 1d20+whatever leads to a large potential spread in rolled numbers. "Those are the breaks".
We do allow people to delay their action if they wish - basically, the initiative you roll is the earliest in a given round that you can act. If two people go on the same initiative number, we break the tie by having whichever has the higher Init bonus (or Dex bonus in case that's tied) go first.
Occasionally plans will be contingent on rolling high ("I hope I roll high initiative next round so I can Disintegrate the bad guy before he escapes!", etc), but we feel it adds flavor.
Each round, the DM counts down from the highest number likely to be rolled (30-31 for the very high-level game we're playing at the moment). When he gets to your number, you say "I go at 25, I cast Disintegrate at the bad guy"). When I DM using my secret program, I just say "Ok, next is Blah, what do you do?".
I should add that we've been playing together using new initiative each round since AD&D in the early 80s, though I developed my secret initiative program only about 13 or 14 years ago. (I'd post it, but it's actually a project I did to learn Python, Apache, mod_python, HTML and JavaScript all at once. I've since converted it to use Django, but I haven't gotten around to making it a standalone program. The JS interface for Initiative was actually pretty nifty.)