So, after four years of non-participation on Codeforces, I recently did three contests in a row and managed to drop a whole color (in part because of being out of practice and in part because of not treating the contests seriously). In fact, I was never dedicated enough for competitive programming (in terms of time/effort/methodology), for a number of reasons, but here's one issue that I'd like to survey fellow competitive programmers about: what is your favorite contest format, and why? Below is my personal view. (This may have been discussed previously, but it's always nice to become acquainted with new/recent opinions).
OI style (IOI & national olympiads): this is by far my personal favorite. First of all, I'm not a fan of team competitions since I like to have a quantifiable measure of my own performance. Furthermore, scoring does not depend on the time that is taken to solve a (sub)problem. This has several benefits. For one thing, it prevents irritating factors from playing a role, such as rushing to submit a solution (say, based on a greedy approach) without being sure about its correctness in order to score higher. The subtasks thing (with full feedback) is also quite a neat feature and means there is something for everyone (unlike Codeforces contest where it's not unlikely that most people only manage to do 0, 1 or 2 problems). This allows for a nice score distribution and is obviously more meaningful than ranking participants based on time. The absence of penalties for non-AC solutions is not something I'm particularly fond of.
ACM-ICPC style: penalties are there, so that's a plus point. Time-based ranking is a minus. Feedback is also present. As said, no fan of team competitions. Since the number of problems on the problem set is usually high, the "something for everyone" part is also available (in a balanced problem set, at least).
Codeforces/TopCoder: usually, there are only pretests during the rounds, and the balance of difficulty is not that great. Additionally, while I know that hacks/challenges add to the fun for some participants, I don't particularly enjoy them (granted, because I'm not good at them, but that's only a semi-reason; I believe that they, like time-based ranking, make the contests unnecessarily too competitive). In fact, I would advocate enabling contestants to opt to participate in "anonymous" mode; you could still participate, but your rating changes/color/submitted code would only be visible to you. Again, I'm aware that this is not "fun" for many competitive programmers, but it's just an option that would ensure that some users aren't too discouraged.