Sure:
$ bash -c 'for ((i=0;i<10;i++)); do echo $i; ((i++)); done'
0
2
4
6
8
In the for ((expr1; expr2; expr3) form, expr2 (and expr3, if expr2 didn't fail) are evaluated each time the loop is run. With the other form, bash starts the loop after words have been expanded (that includes performing command substitution, globbing, etc.). So you can't affect the possible values of the iteration variable (name) once the loop starts. You can, of course:
$ bash -c 'for i; do echo $i; break; done' _ a b c
a