I'm assuming you're clearing the code after putting in some fuel injector cleaner? Regardless, its just a temporary fix, its staying off for a while probably due to a different fuel mixture reading the O2 is seeing with the cleaner mixed in.
Yes, more than likely your cat is clogged/dying/dead. You could try and run some cat cleaner (don't have any links but saw some people mention it previously) but that is more than likely a waste of time an money too.
You have 3 options as far as I'm concerned, ranging from free to very expensive.
1. Option 1 -Free (for off road use only ;) ) : since P0420 is only for the second bank, you can get some wire and tap into the signal of the Bank #1 O2 sensor. This will feed the same reading from bank 1 to bank 2. I've run this fix for quite some time this year with 0 issues.
2. Option 2 - $12 (for off road use only ;) ) : this is my current fix and has worked so far like a charm. I can't claim this fix as my own as its been done time and time again and I found previous pages with this fix. Buy yourself some Doorman spark plug non foulers and drill them out with a 1/2" drill bit to screw the 02 sensor into it before placing it back on the car. This effectively spaces the O2 sensor out of the exhaust stream just a bit and reduces the reading it puts out. I started by stacking 2 of the adapters but that put it too far out and it wasn't picking up enough of a reading and threw a code. I removed one adapter and have been driving for 4 weeks now with all system initialized with 0 issues. Spark Plug Non-Fouler Dorman 42009
If you scroll through page 17 on my build thread you'll see what I'm talking about :
aemravan's build thread - project TacoRunner
3. Option 3 - An Arm and a Leg (only CORRECT street legal fix) - replace the cats.