Number One cause of run-on is that the idle speed is too high. Verify your idle speed, and therefore the IAC valve operation.
Lesser causes are as said--crap octane, carbon in the chambers, a wiring fault where turning off the key doesn't actually kill power to the ignition/fuel injectors, etc. Overall, I'm surprised that a fuel-injected engine can "run on".
When I want to clean carbon from combustion chambers, I drizzle a "urine stream" of plain ol' water down the throttle bores at ~2000 rpm.
Water does an AMAZING job of removing carbon via "steam cleaning". Dirt cheap, effective. Might want to change oil 'n' filter afterward, due to moisture contamination.
And it doesn't cause the neighbors to call the fire department like dropping Seafoam or Top Engine Cleaner down the throttles.