Dirty IAC. Oh wait, I already said that. Get a can of carb cleaner, take it off, clean it and in the intake where it goes. Prove me wrong. I dare ya. Then if I am wrong, start looking for a vacuum leak or a leak in the intake somewhere.
A TPS problem is far more uncommon than my previous mentioned issues. A TPS is super easy to rule out with an analog volt meter.