A software appliance is a software application combined with just enough operating system (JeOS) to run optimally on industry-standard hardware (typically a server) or in a virtual machine. It is a software distribution or firmware that implements a computer appliance.
Virtual appliances are a subset of software appliances. The main distinction is the packaging format and the specificity of the target platform. A virtual appliance is a virtual machine image designed to run on a specific virtualization platform, while a software appliance is often packaged in more generally applicable image format (e.g., Live CD) that supports installations to physical machines and multiple types of virtual machines.
Installing a software appliance to a virtual machine and packaging that into an image, creates a virtual appliance.