I don’t know how much action is actually taken against cheaters. Rating updates are delayed sometimes and it’s claimed to be because of removing cheaters, but we see almost identical codes even long after contests. There was a case when a post mentioned 2 cheaters, and several weeks later, it mentioned that no action had been taken against them. Wat?
The first thing to do is unification of rules. A lot is only mentioned in FAQ or Code of Conduct posts, but who’d read that… in fact, who’d read the rules in the problems’ page? I know that well: we’re lazy and don’t want to read boring stuff like that. Nevertheless, it should be all unified. And the rules against cheaters should be especially pointed out among these.
This opens one more possibility: strong punishments. FB Hacker Cup disqualified someone for posting anything about the problems in comments. It was nothing big, but he broke the rules and was disqualified. In this case, just one disqualification is weak: temporary/permanent ban. Or IP ban, or subnet ban (which is not a good idea, though :D). Something that’d teach people that if they cheat once, they won’t be given a chance to do so again for a long time.
Most importantly, the submit needs a bot which’d scan any submitted/accepted (pick one) solution against other ones (during/after the contest, pick one again) and if it detects excessive similarity, report (or outright disqualify/ban) the user in question. It doesn’t seem that hard to do.
Also, it’d be good to publish a list of proved cheaters for every contest. Something like a Hall of Shame.
Although with the way things have been going (or standing), I doubt Codechef will ever give any regard to these ideas.
EDIT: This is off-topic, but it’s also a change that should be made. Comments should give karma if upvoted. Maybe less than answers, but still, they should give karma. Sometimes a comment is much more useful than an answer.