There are various situations in which calling Application.Quit() will not remove the Excel application from memory; see this posting for more information:
http://www.dotnet247.com/247reference/msgs/68/344322.aspx
Suggested solutions involving calls to Marshall.ReleaseComObject(), never referencing an Excel object more than one level deep without storing it in an intermediate variable, and so on, are either unreliable or fragile and grossly impractical. This class offers a brute-force workaround for all those problems.