I have some good news...
I was able to eliminate all dependency on node-set() in my XSLT. If node-set is available to a parser, it will use it, but otherwise, I fall back on "brute force" templates which get the job done, although slowly and inelegantly.
The one page I wasn't able to get working 100% correctly is my song index page. It lets me sort songs by title, album, year, etc. The sorting works but some of the presentation and counting are dependent upon preceding::node, which seems locked into document order rather than the order specified by xsl:sort. preceding::node works best with node-set(), which I can't use for Firefox. So Firefox's previewing is imperfect for that page.
Aside from that one page, all the other pages preview fine in Firefox now, which is a great relief to me. It means I can eliminate my dependency on IE7 previewing, which is still buggy in Vista. Hooray!
If you are curious what the XML vs HTML versions look like, here are some links. Just try to disregard the subject matter (a really bad band that I chose as an example because it doesn't have many songs or albums).