The previous stage (amplified from a sensor) which I am going to input into the arduino's analog has a maximum output of +-10V, but my useful range of signals is only from +-2.5V. So I'm going to DC offset it by 2.5V so it goes in the range 0-5V. But I cannot guarantee that there will be no signal below 0V and above 5V. Is there a simple way to do an over and undervoltage clipping?
It depends on the output impedance of your sensor. Let's say you're going to use a standard op-amp to do the level shifting with output impedance in the ~100 ohm range. Then when you start exceeding the 0V/5V limits the Arduino's input pin ESD diode will start conducting. The ~100 ohm output impedance of the op-amp will limit this current. Between 5.0V-5.3V and 0V-(-0.3V) the ESD diode won't conduct anyways, and beyond that the op-amp limits current. For example, if the op-amp drives 5.5V and the ESD diode starts conducting at 5.3V then the current will be limited to 5.5-5.3/100 = 2mA.
So I'd say you're pretty OK between -0.5V and 5.5V. Beyond that you may want to add a 5.1V or 5.6V zener diode across the input to divert the current, or add in extra series resistance and not just count on the output impedance of the op-amp. A 1k series resistor will greatly improve your tolerated input range. Even driving 6V into a pin will limit current to 6-5.3/1k = 700 microamps.
The drawback of course is that the more resistance you add the longer you have to wait for the analog input to settle before taking a reading, though Atmel recommends sensors with an impedance no higher than 10k so as long as your total sensor output impedance is less than this you should be OK. Again, if you're coming from a ~100-ohm op-amp and follow this with a 1k series resistor I think you will be fine.
-- The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons