wildbill: As discussed, you can manually adjust the iterator value in a for loop should you choose to, but when I see a for loop, I don't expect it. Such behaviour causes a bit of a double take: "What on earth is happening here?". I'll take PeterH's point that it's not banned by some higher power (Struggling with precise phrasing here), but to quote Jeff Goldblum's character in Jurrassic park: "Just because you could doesn't mean that you should".
My objection wasn't about manipulating a FOR loop's control variables within the body of the loop. I suppose there might be situations where that's a sensible thing to do, but in general it does not seem desirable because it's likely to encourage false assumptions about what the loop does.
On the whole I think I agree with PaulS' view of when a FOR loop is most suitable. I tend to think of it in terms of "for each thing in this set, do ...". I'll happily use it to do counted iteration, or consume the contents of a stream, or walk a memory structure, and so on. Other people may prefer to use different constructs in those situations, and that's fine. This is only a matter of personal preference though, and not a matter of right or wrong. The suggestion that it was [u]wrong[/u] to use a FOR loop for anything other than counted enumeration is what I objected to. It may not be your preference, but it isn't wrong.