Dunno, if you live in a dirty area, the IAC and air filter can become dirty quite fast. They're doing a lot of brick work in my complex and there is an awful lot of dust, on top of the high viscosity of NYC air. Start with the IAC and air filter (ever changed the air filter?)
You may want to do a tune up on it, I did mine around 40K and found the plugs had the incorrect gap and the ignition wires were chewed. My idle was never horrible, but noticeably smoother after the tune up.
Bad gas can have something to do with it, try changing stations if you always go to the same one. The brand new Sunoco in my area everyone went to for their lower prices seemed to trigger the check engine light on my Trac.
I usually run a fuel system cleaner like dura lube or chevron techron every 3K miles, and religiously use top tier (Shell) gas at 87 octane for its higher detergency. I have noticed that an occasional fillup with Shell 93 octane (5x the detergent in top tier) is worth it, and do this around 1K miles.
87 octane is fine, but one bottle of injector cleaner may not be enough if the fuel system is really mucked up. The fuel filter may be clogged if you've had some fillups of nasty gas. If it's a fuel system issue, it can range from being as simple as changing stations or a bottle of injector cleaner, to a complicated flush / cleaning of everything from the tank to the injector.
Work with the dealer and don't let them off the hook. Just because they say they can't find anything wrong, doesn't mean that you don't have a problem. Kick it up the support chain until you're barking loud enough at Dearborn itself, especially if you're under warranty.