My readings for the ADXL330 don't jump by more than +-1 unless there is vibration or it is sitting on something unsteady. One thing I found helped was to wire the voltage supplied to the accelerometer to the AREF pin, and add this to your defs:
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
Then put this in your setup function:
cbi(ADMUX, REFS1); //clear REFS1 bit (0)
cbi(ADMUX, REFS0); //clear REFS0 bit (0)
I had to do this since the ADXL330 is a 3.3v part, but it seemed to improve the ADC results. I have read recommendations to put a capacitor between AREF and GND to filter out noise, but haven't found it necessary.
Another issue is that the output impedence of the accelerometer may be higher than the input impedence of the ADC, leading to bad data. This can be fixed adding a buffer (just an op amp with a gain of 1, but lower impedence output) between the accelerometer and ADC. I have good results using a MCP6004 (they still make a DIP version!!).
I found this link pretty educational about buffers and ADC's: http://www.maxim-ic.com/appnotes.cfm/an_pk/1094
Are you powering your project with USB? It can be pretty noisy.