If fuses set wrong, its high voltage time
If clock set wrong and won't program (like setting low 128khz)
(yes I've done both, but that's how you learn)
Fuses set wrong and won't program (here are two sights I've used) and I built a the HV programmer on a proto board and it works great for resetting fuses..
Clock Set wrong and won't program (super slow speed)
Sometimes you might want a super slow clock for something that is not fast and you want to use as little power as possible. Here is how you can continue to use a slow clock and program. AVRDude was my savoir. I initially started with Arduino IDE and later when I wanted more use and more control of the AVR chips, I switched to C and use avr-gcc and Atmel studio 7. Back to avrdude... Once I used a nice slow baud rate, it all worked. Of course you need to know were your hex file is depending on IDE you use. If avr-gcc, well your command line and probably in the directory or know were its at. After trying high voltage and it would set the fuses how I wanted and read the chip, it still would not program.
After a little digging I saw on a chat about using -B option in avrdude. So I added -B1024 (nice and slow) with usbtiny. IT WORKED, was a tad slower loading up of coarse..
But I also found when I set an Attiny to low on a clock speed, one other solution was to use my usbasp with the J3 jumper on for slow speed. This works some of the time. But when all else failed, the command line and baud rate change with -B worked.
Here is usbasp fixing an attiny85 that won't program with Arduino as ISP or usbasp at slow speed or usbtiny ran from IDE: