Free circuit simulator for educational purposes
I often use the falstad simulator:  http://www.falstad.com/circuit

It's a Java applet, so will work on pretty much any operating system.  The interface does take a bit of getting used to, and there are problems saving in Linux (it gives you a link to copy and paste, and copy and paste in Java doesn't work too well in Linux).

Other than that it ticks all your boxes.  It also has some good sample circuits.
A Windows version (circuitmod) is based on this.