actually im using a crystal(4mhz)and the usbasp im using is of my avr developement board.im using a breadboard platform to burn the code in to microcontroller.
i didnt change anything on my microcontroller(fuse settings).
how do one change the fuse settings on the microcontroller?
If you haven't changed the fuse settings then you should be using the default clock setting of the microprocessor, using the internal clock (the crystal would be ignored in that case). I don't have time to look up the data sheet right now, but you can find the default setting in the "Clocks" section of the data sheet. The "Memory Programming" section gives information about the fuses. Don't change the fuse settings unless you understand this section.
However, if you haven't changed the fuses, then I suspect your breadboard setup. Try verifying that all the wires are actually making contact the way they're supposed to. Maybe it's just a loose wire on your SPI connection. If that's not it, you may need to adjust the speed of your programmer to match the speed that the chip is actually running at. I don't use usbasp, but I've seen discussions which mention it sometimes needs adjustment. Just a thought.
Joe