Try disconnecting the battery for a day and then hooking it back up, might not do anything since its an open loop system, but you could try. It really sounds like your IAC is not dashpotting. This is where I like the data logger graph to monitor tps, rpm, and iac position (idk about volvo, but on some motors, IAC "duty" does not refer to the actual position of the IAC, but rather how much it is moving... pretty useless IMHO in your case). I start the data logger, and run the boat so it acts up. You should see the iac open up as you rev up, and stay open as you slow down, until the motor gets the throttle closed signal from the TPS.
Generally at idle and about 20C I would want to see the IAC at about 30%. On some motors there is a way to set the IAC into service mode, which locks it in at the position where it should be at idle, and the bypass air screw (or throttle stop, if no bypass screw) is adjusted to get target idle speed. If your IAC is full open already at idle, there isn't much it can do to give more air to the motor when it slows to idle. that is why it runs at around 30% at idle, to allow a much larger range to open when the motor rapidly slows down.
For the issue where it wont return to idle, you need to watch the tps reading before and after revving it up. When you turn the key and the ecm turns on, it takes that tps reading as idle. Anything just SLIGHLTY higher (about 0.02-0.04 volts), and the motor is no longer in idle mode. As a result, the IAC opens up much further. When you get on the throttle, it always opens up, so when you snap the throttle shut, the IAC is already in the open position so the motor doesn't stall. For this issue, clean the throttle plates to ensure they are not sticking, and make sure there is preload on the throttle cable.
Sorry for it being so long, but i hope this helps