Check the routing of your vacuum lines. In particular look at the one going to the MAP sensor. The MAP sensor is the #1 device the ECM uses to decide how much fuel to inject. No vacuum line to the MAP and the ECM thinks you are at wide open throttle.
Check your CTS. If the ECM thinks the engine is cold it will up the idle and it will run the engine rich. You can measure the resistance of the CTS or just replace it. You can also as a test stick a 150 ohm resistor into the CTS connector and see what that does to the idle. The 150 ohm resistor will tell the ECM that the engine is at 220 degrees. 1/4 or 1/2 watt works fine. Radio Shack $0.99
Most likely not an IAC - Why? No IAC code from the ECM. Also if the ECM has the idle faster when cold and slower when warm you know the IAC is actually working.
If the vacuum lines look ok try electrically unplugging the MAP. If that makes it run better and you do have vacuum at the MAP then replace your MAP
If unplugging the MAP doesn't make it run better try unplugging the O2 sensor. If that improves the idle then replace the o2 sensor. Note the ECM doesn't use the O2 sensor until the engine warms up. So if this condition is happening right from the start at a cold start it can't be the o2 sensor.


Note if you do decide to take off the throttle body. If you put the gasket on upside down on the throttle body you will block the IAC passage and the engine won't idle by itself. It might be the replacement gasket doesn't have an IAC hole in it also. Others have had that problem.
[This message has been edited by phonedawgz (edited 03-17-2011).]