I hope this helps someone.
If I'm right, this problem only occurs when there is more than one adapter installed and the mount order changed for some reason resulting in the cards having changed references after a reboot. The re sequenced adapters look like new adapters to tvheadend which adds them to its' file system creating duplicates. Tvheadend subsequently tries to open a card using the old references and fails.
In my case the back end has one DVB-S and one DVB-T card installed.
dmesg shows the adapter allocation.
$ dmesg |grep adapter
[ 11.504041] DVB: registering new adapter (saa7133[0])
[ 11.504047] DVB: registering adapter 0 frontend 0 (Philips TDA10046H DVB-T)...
[ 50.531169] DVB: registering new adapter (cx88[0])
[ 50.531172] DVB: registering adapter 1 frontend 0 (Montage Technology DS3000/TS2020)...
i.e. the DVB-T card (Philips TDA10046H DVB-T is loaded as 'adapter 0'
and the DVB-S card (Montage Technology DS3000/TS2020) is loaded as 'adapter 1'
Tvheadend constructs a directory and file system to store required data
$ sudo ls -la /home/hts/.hts/tvheadend/
total 48
drwxr-xr-x 11 hts hts 4096 2012-02-29 18:49 .
drwxr-xr-x 3 hts hts 4096 2012-02-29 17:18 ..
drwx------ 2 hts video 4096 2012-02-29 23:25 accesscontrol
drwx------ 2 hts video 4096 2012-02-29 18:49 channels
drwx------ 2 hts video 4096 2012-02-29 18:49 channeltags
drwx------ 2 hts video 4096 2012-03-01 00:36 dvbadapters
drwx------ 4 hts video 4096 2012-02-29 17:34 dvbmuxes
drwx------ 4 hts video 4096 2012-02-29 22:59 dvbsatconf
drwx------ 3 hts video 4096 2012-02-29 17:25 dvbtransports
drwx------ 2 hts video 4096 2012-02-29 18:08 dvr
-rw------- 1 hts hts 56 2012-02-29 17:21 superuser
drwx------ 3 hts video 4096 2012-02-29 18:10 xmltv
Looking closely at the dvbadapters directory, two spurious cards (4 cards instead of 2) have been set up.
$ sudo ls -la /home/hts/.hts/tvheadend/dvbadapters
total 24
drwx------ 2 hts video 4096 2012-02-29 23:21 .
drwxr-xr-x 11 hts hts 4096 2012-02-29 18:49 ..
-rwx------ 1 hts video 176 2012-02-29 18:06
devdvb_adapter0_Montage_Technology_DS3000_TS2020 # old
-rwx------ 1 hts video 167 2012-02-29 18:11
devdvb_adapter1_Philips_TDA10046H_DVB_T # old
-rwx------ 1 hts video 169 2012-02-29 23:21
devdvb_adapter0_Philips_TDA10046H_DVB_T
-rwx------ 1 hts video 178 2012-02-29 23:21devdvb_adapter1_Montage_Technology_DS3000_TS2020
It looks like tvheadend detected the two adapters with new names (registered in reverse order after an update and reboot) then added them as new cards. The reversed order is probably because the driver software was changed which altered the load times for each card and affected the adapter registration sequence - so this could happen again.
Using rm and rmdir I removed all files and directories that reference the old configurations
i.e. in my case '...adapter0_Montage...' and '...adapter1_Philips...' in the dvb directories
dvbadapters/...
dvbmuxes/...
dvbsatconf/...
dvbtransports/...
e.g. of files removed in dvbadapters
$ sudo rm /home/hts/.hts/tvheadend/dvbadapters/_dev_dvb_adapter0_Montage_Technology_DS3000_TS2020
$ sudo rm /home/hts/.hts/tvheadend/dvbadapters/_dev_dvb_adapter1_Philips_TDA10046H_DVB_T
e.g. where dvbsatconf file structure references two DVB-S adapters when there is only one installed
$ sudo ls -la /home/hts/.hts/tvheadend/dvbsatconf
total 16
drwx------ 4 hts video 4096 2012-02-29 22:59 .
drwxr-xr-x 11 hts hts 4096 2012-02-29 18:49 ..
drwx------ 2 hts video 4096 2012-02-29 17:18
devdvb_adapter0_Montage_Technology_DS3000_TS2020 # old
drwx------ 2 hts video 4096 2012-02-29 22:59devdvb_adapter1_Montage_Technology_DS3000_TS2020
e.g. of files under spurious directories
$ sudo ls -la /home/hts/.hts/tvheadend/dvbsatconf/_dev_dvb_adapter0_Montage_Technology_DS3000_TS2020
total 12
drwx------ 2 hts video 4096 2012-02-29 17:18 .
drwx------ 4 hts video 4096 2012-02-29 22:59 ..
-rwx------ 1 hts video 129 2012-02-29 17:18 1 # old
I inadvertently deleted some good files so decided to run a reconfigure after the clean up.
$ sudo dpkg-reconfigure hts-tvheadend
i.e duplicate adapter entries were gone from the webui and
XBMC frontend (on seperate machine) is working again i.e. no longer failing with 'no hardware detected'