Problem Switching Relay with Transistor from Microcontroller
As Matt says, the first thing that jumps out is more capacitance needed.  

Breadboards are terrible for stray inductance/capacitance so you really need to try and keep wires as short as possible, keep sensitive signals away from higher current/voltage/fast changing signals, and add plenty of bypass and bulk capacitance around the circuit.  

I would start with a couple of >100uF electrolytics on each power rail and near the FET, with a few 100nF or higher ceramic caps on the power pins of the ICs.

Another thing to look at is using a separate rail for the relay, and routing the ground return separately from the uC's ground. Of course they need to be tied together, but you can ensure the high current return does not flow through the uC board's ground this way.