2.4Mhz clock for 3-wire SPI using Arduino Mega 2560
It's hardly possible to generate a stable and exact frequency with your method. 
Imagine you have an interrupt routine interrupting your spiRead() or any function called inside: Your clock will be extended by the ISR runtime.
Apart from this: 


I'm not sure if your LOW phase is long enough (there's no delay between setting CLK from LOW to HIGH. If 2.4 MHz is the max frequency for the chip, it should be at least 208ns.
However:
If you are sure that the runtime of digitalWrite is always longer than 208ns, you could remove your delay() at all. The resulting frequency is the maximum possible you can achieve with your method.
The smallest delay() is 1ms, which leads to a maximum of something &lt; 1 kHz (or even 0.5kHz for a 50:50 signal). 
You should use delayMicroseconds() to get at least 500kHz.


But what I'm really wondering:
Why are you implementing bit banging instead of simply using the SPI library?