I completely agree with "Andrew Johnson" in that analogy is the best way to explain technical problems to non-technical people. If you can grab on to a mental construct that they already have, appending to it is usually a piece of cake. Focus on the underlying idea of what you are trying to communicate, and think of other areas which share that fundamental concept. Stories are a great way to explain how things work.
Remember that all people have a favorite sense. If you are having trouble communicating with a particular person, trying changing the sense you are appealing to. If you are trying to explain with articulate words try drawing a picture or diagram, or visualize a 3d model using small objects on a table. Think of how easy it is to explain how a HashMap works with a few cups and some ripped up pieces of paper.
For example, the other day I was asked a question about how a particular part of software worked. The underlying data structure is composed of a graph of objects, all of which are linked to a common cluster object. The UI allows you to navigate using the links between objects, and the user was getting confused because she would often find herself on the wrong page without any idea how to get back. Explaining that some links are bidirectional and whether two events are linked is computed using XYZ algorithm just was not going to work. Instead I explained that the links are organized like the wheels of a bicycle, and if you want to navigate from one object to another you can always travel down the spokes to the middle of the wheel and find your way from there.
Ask question along the way to see if they are really "getting it". Don't be afraid to take multiple approaches when explaining. Often time a little bit of repetition will go a long way.
Taking the time to clearly explaining how things work will come back to you many times over. Us programmers often overlook the easy oportunities to build relationships with those around us. By taking the time you are making that person feel important, maybe even empowered.