Iteration is the process of repeating a set of tasks to refine some objective, where each repetition adds extra information to the process, which is used to improve subsequent repetitions.
Iteration is not to be confused with recursion, which is also a very important aspect of design processes.
Iterative processes are supposed to work like this:
Figure 1 shows a good example of an iterative process. The process works at the same level and with the same objects/entities, continually refining an output. The heating system in your home, and convergent numerical methods are also examples of iterative processes.
The question of when the results are “good enough” is an important one. If you're doing the tasks properly, then the differences between two successive iterations will become less and less. This is convergence. Generally, convergent processes only reach the “perfect” solution after an infinite number of iterations. Instead, we iterate until the improvement becomes so slight that it simply isn't worth the effort to continue iterating. That's when one can stop the iterative process.
Iteration in designing is when you have to repeat some steps over (and over) to get it right.
It has been shown (e.g. [IKE00]) that many, fast, short iterations early in the design process can cut total development time by as much as 50%.
So you don't want to go through the whole design process once then have to start over. You want to iterate over each stage quickly and often to most likely cut the time you need to spend fixing and redesigning things later.
This is also supported by one of IDEO's “rules” of design: fail often to succeed sooner.