SPI clock "stalled" on ATmega1284P?
I haven't verified this since I have no hardware at hand but i think I see the problem.

You are not initializing the direction of the SS pin properly.

SPI_DDR |= SPI_SS;


sets the wrong pin (PB2). It should be

SPI_DDR |= _BV(SPI_SS);


with _BV() actually setting the fourth bit (SPI_SS = PB4 = 4).

As to the strange behavior that may result from not setting SS as an output.


  If SS is configured as an input, it must be held high to ensure Master SPI operation. If the SS pin is driven low by peripheral circuitry when the SPI is configured as a Master with the SS pin defined as an input, the SPI system interprets this as another master selecting the SPI as a slave and starting to send data to it. 


This would cause your system to become a SPI slave, thus requiring an external clock to send further data and trigger the next SPIF. When touching the SCK, you may induce ripple that acts as a clock.