For a 20 gallon tank (are you looking into a 20 gallon high or a 20 gallon long?), I would use maybe an AquaClear 50. That would give you plenty of filtration for whatever you want to put in there.
As far as how long it'll take to cycle, that depends. Usually it takes about 3-4 weeks for a tank to completely cycle, but sometimes it can take longer.
I would DEFINITELY not recommend a fish-in cycle! Especially not with a betta! Bettas are actually very sensitive and you'd lose the betta LONG before you cycle was complete. Read up on fishless cycling. It's easier and it'll cost you less because you won't end up losing fish.
What kind of catfish would you be interested in? If you want cories, I'd say got for it. They're absolutely adorable. I don't know if I'd do two snails since you'd more than likely end up with many many baby snails to deal with. With what you have listed, you'd have plenty of room in your tank (that is, if you want cories as your catfish...some of your other catfish, like upside down cats, would get too big to be comfortable in a 20gal tank).