The Bus Pirate is an open source design for a multi-purpose chip-level serial protocol transceiver and debugger. Flashrom supports the Bus Pirate for SPI programming. It also has SPI sniffing functionality, which may come in useful for analysing chip or programmer behaviour.
They are available for around US$30 from various sources.
$ flashrom -p buspirate_spi:dev=/dev/device,spispeed=frequency
$ flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M
The Bus Pirate has various options for SPI communication. Many SPI chips support the JEDEC standard identify command, which can be issued from the Bus Pirate prompt like this:
You'll need to refer to the flash chip datasheet to see how it should respond to this.
In circuit programming it often possible, so long as no other devices on the SPI bus are trying to access the device.
See also ISP for more details about in-system flashing in general.