I personally think people learn through an unconscious process very much like the scientific method.  They hypothesize about how the world should work, collect data, compare the data they have collected to see if it fits in their theory, and then revise their theory if they feel enough evidence has been found.  In this way, people construct an understanding of the world around them using what they know as a basis.

Each piece of knowledge people gain has to be fit into their personal hypothesis.  At first, people will "bend" their hypothesis to make facts fit which seem inconsistent, but eventually if enough contradictory data is collected, people are forced to revise their ideas.  This is part of the reason why students have so much difficulty learning topics for which they do not have any background; they are constantly required to create and revisit their hypothesis, and to build theories about the information they are receiving "from scratch".

It is crucial during this process that the learner feels comfortable to make mistakes.  Instead of feeling pressure to have exactly the right answer each time, learners must be willing to work through the entire process of learning.  Although it is possible that an individual learner will have a theory which fits all the facts as they are collected, it is much more likely that conflicts exist between their theory and the data. 

In the classroom, this is when we normally say that a student has "made a mistake", which is unfortunate language.  Rather than criticizing students who have a cognitive discord occurring, we should encourage more reflection of the learning process, and provide opportunities to establish a new theory which fits the given facts and can be worked into the learner’s personal theory of how the world works.