I sometimes use a non-linear approach to try and combine the effects of a stable display when the input has settled, but retaining the ability to react quickly to sudden changes in input.
If the input isn't changing rapidly, then I use a moving average as Mike suggests. Store however many numbers you want to average in a table, then whenever you take a new reading, pick the next slot in the table, subtract the figure that's there from your running total, and add the new sample. Keeping a running total and adding/subtracting from it saves having to add up the contents of your table every time, so you can have a table limited only by memory size rather than CPU speed.
If, however, you sample an input which is radically different from your displayed figure, then rather than just adding it to your table and letting it get averaged away, clear the table entirely and 'seed' it by filling it up with copies of the figure you've just sampled. Discard your running total figure as well, of course, and re-compute it by multiplication.
Depending on how your system responds, you might be able to add some additional cleverness. For example, don't 'seed' the table until you've seen two results in a row, both of which are similar to each other but significantly different from the running average.