Finally figured out why I wasn't seeing any DBG() statements with Xsane: I was connecting to the scanner over the network.
My scanner runs off a scsi card in an old Pentium III with no monitor, so I ssh'd to the remote PIII computer to edit my hs2p backend and to run scanimage, so naturally my DBG() statements showed up. But I forgot and ran Xsane from my fluxbox (local) desktop, so whatever DBG() statements hs2p was writing weren't being redirected across the net. Once I ran Xsane from the PIII, all my DBG() statements showed up, and (curiously) the Preview Scan functioned just fine, whereas connecting over the net with Xsane to hs2p backend, I get an invalid argument when clicking the Preview button. Well now that I've got some DBG() output, I think I'll wrap this backend up shortly.
