What is a good way to explain computer viruses?
Viruses, worms and other malware are actually just like physical infections in enough ways that I still think metaphors are the best way to educate from a basic level. Even the average home user knows that a virus scanner stops a large number of infections from ruining their PC.

The challenge comes with explaining why virus scanners are so limited - most up until now only catch what they know about. So I like to use the following:


Malware is written to control your PC or to steal your login information for online banking etc. 
Your virus scanner will protect from tens of thousands of pieces of malicious software that it knows about.
Behavioural analysis tools will pick up more malware, based on what it appears to do.


But because code is written by humans, there will always be vulnerabilities, and because there are criminals, there will always be malware that will get past these, and this is why layers of security are essential. These include:


User awareness (don't visit dodgy sites, don't click on suspect emails etc)
Secure architecture (secure by design) 
Extensive monitoring and logging
Understanding the threat environment
etc.