I'm having some problems programming fuses using avrdude on an atmega168. I tried to isolate the problem using the command line version (usually I just configure my WinAVR/avr-gcc makefile):
avrdude -p m168 -P com1 -c stk500v2 -u -U efuse:w:0xff:m
What's odd is that programming the other fuses (hfuse and lfuse) seems to work just fine. I'm using the version of avrdude that came with WinAVR-20071221. Maybe a more recent WinAVR or avrdude release will fix the problem... or maybe I'm just doing this the wrong way.
This command still fails to program the efuse in the latest build of WinAVR.