From a few years of testing and several hundred mainstream users I would add to this:
4 seconds -- the trusted progress period: the approximate amount of time you are allowed after the user clicks on something, after which some users begins to suspect that perhaps things are not proceeding on track as expected.<p>Example: User clicks on a web page link. Half of the next page is drawn (clearly not finished). After about 4 seconds without visible progress, the user will assume that the process has failed. A longer (>4 seconds) page download/draw may be accomplished with progressive feedback.<p>Example: User enters some text and clicks a Search button in a desktop app. A thermometer control shows initial progress, then stalls. Again, you get ~4 seconds in (apparently) stalled state before the user <i>starts</i> thinking something may be awry. (Time to actual give-up varies more).<p>Interestingly, lower-resolution progress feedback that includes animation is vulnerable to the same threshold. So for example if instead of the progress thermometer we simply put up an hourglass cursor, we can assume that some users will start to question the integrity of the process after ~4 seconds of watching the hourglass do its usual thing. Likewise with a barber pole/ thermometer that spins but doesn't grow. Normal animation, or rotating slide shows, or whatever other easy-to-display distractions that we have come up with, don't actually address this fundamental problem. I believe habituation teaches even many naive users that those indicators cannot always be trusted. Trusting the integrity of a process, after that 4 second threshold, requires something progressive or novel. This makes getting through any process that takes an unknown amount of time but more than 4 seconds a tricky unsolved problem. I believe a higher level of novelty would extend the threshold considerably, but the real key is demonstrating that the process is still making tangible progress toward a known end goal.