Why not use an acknowledge system...
So, pic0 sends data to pic1, when pic1 recieves the data and verifies it it whole it sends and acknoledge back to pic0...
If pic0 doesn't recieve the ACK then it re-sends after a time-out...
If PIC0 resends the same piece of data more than 3 times it does a 'crashed' cpu subroutine and then stays their waiting for user intervention...

This way, you could proberbly use some of the faster ways of communicating...

Enhansements to this would include some form of CRC checking to make sure atleast the number of bytes has been recieved...

So for example a data packet might look like this...

Byte1: To PIC #
Byte2: From PIC #
Byte3: Data Type
Byte4 to whatever: DATA
Last Byte: Number of bytes in packet including last...

So PIC1 sends and 'ACK X number of bytes' back to PIC0