Hi Nick,
this is a very common issue. We generally give up a little bit of ADC range and offset the readings, correcting in software.
As an example, we recently designed a corrosion protection data logger form one of our clients and won 2 awards for the design. For those interesting in seeing more there are some links on this page with technical details
http://www.successful.com.au/awards.html
http://www.successful.com.au/blog/2009/08/17/2009-edn-innovation-awards-finalist/
For this analogue electronics design, we had a +/-10V range and so offset the voltage into the ADC by half the reference voltage and allowed some gain range so we wouldn't saturate the ADC at either extreme with a worst case outcome on tolerances. The readings are then corrected in software using calibration data stored in EEPROM.
The advantage is a simple design with predicatable performance and low power. 6 months of battery life from 3xAA cells was the required life for the data logger. This is a typical scenario for achieving low cost electronics manufacture while maintaining product performance.
The disadvantage is that we give up some ADC range to achieve this and there is only so much you can do with sampling and filtering to improve that.
We used the ADC in an Atmel AVR device which was also the sytem controller. These have very good linearity though they are slow compared to most ADCs today. Since speed wasn't a big issue that was fine. And the AVR has internal EEPROM and good power saving modes so overall it worked out very well.
I'm looking forward to part 2 on sensor signal conditioning.
Ray Keefe
http://www.successful.com.au