Try this code, I cleaned it up a lot. Slave address is 2.

1) From the master, try to read 12 from the slave

2) Try to send one byte (zero) to the slave and do something.

I don't have MPASM so, it could be some small errors, check them.

Code:
'Oscillator Initialization
DEFINE OSC 32 ' Osc. in MHz
OSCCON = %01110000 
OSCTUNE.6 = 1 
ADCON0.0 = 0 ' Turns off A-to-D module
ADCON1 = $0F ' Makes 100% port A digital 
TRISA = %00000000
CMCON = 7 ' Comparators Off

DEFINE I2C_HOLD 1

' Define used register flags
SSPIF VAR PIR1.3 ' SSP (I2C) interrupt flag
SSPIE VAR PIE1.3 ' SSP Int Enable
BF VAR SSPSTAT.0 ' SSP (I2C) Buffer Full
R_W VAR SSPSTAT.2 ' SSP (I2C) Read/Write
D_A VAR SSPSTAT.5 ' SSP (I2C) Data/Address
CKP VAR SSPCON1.4 ' SSP (I2C) SCK Release Control
SSPEN VAR SSPCON1.5 ' SSP (I2C) Enable
SSPOV VAR SSPCON1.6 ' SSP (I2C) Receive Overflow Indicator
WCOL VAR SSPCON1.7 ' SSP (I2C) Write Collision Detect
'STRETCH VAR SSPCON2.0 ' SSP (I2C) Clock stretch

'---------------- Alias pins -----------------------------------

TRISC.3 = 1 ' input
TRISC.4 = 1 ' input

'--------------- Define used register flags -------------------

STAT_BF VAR SSPSTAT.0 ' SSP (I2C) Buffer Full
STAT_RW VAR SSPSTAT.2 ' SSP (I2C) Read/Write
STAT_DA VAR SSPSTAT.5 ' SSP (I2C) Data/Address
CKE VAR SSPSTAT.6 ' SSP (I2C) Data/Address

'------------------- Rx Buffer definition --------------------
RxBufferLEN CON 1
RxBuffer VAR BYTE[Rxbufferlen]
RxBufferIndex VAR BYTE

'------------------ Tx Buffer definition ----------------------
TxBufferLEN CON 1
TxBuffer VAR BYTE[txbufferlen]
TxBufferIndex VAR BYTE

'------------------ Define constants ------------------------

I2Caddress CON $2 ' Make address = 2

' Define constants


datain VAR BYTE
readcnt VAR BYTE 
WRData VAR BYTE


'SSPADD = My_I2C_address ' Set our address
SSPADD = I2Caddress ' Set our address
SSPCON2.7 = 0 ' General call address disabled
SSPCON1 = $36 ' Set to I2C slave with 7-bit address
SSPSTAT = 0
SSPIE = 1 
SSPIF = 0 
RxBufferIndex = 0
TxBufferIndex = 0
bf = 0
SSPOV = 0

'Port C harware UART settings 
DEFINE HSER_RCSTA 90h 
DEFINE HSER_TXSTA 20h 
DEFINE HSER_BAUD 9600 
DEFINE HSER_CLROERR 1 

'----------------- Initialization Done! -----------------------------
GoTo main

'-------------------------------------------------------------------------------

I2C_Slave: ' I2C slave subroutine
          sspif = 0                            ' clear interrupt flag
          IF r_w = 1 Then I2C_Read                ' read data from us
          IF bf = 0 Then I2C_Exit               ' nothing in buffer so exit
          IF d_a = 1 Then I2C_Write                ' data for us (not address)
          IF sspbuf != i2caddress Then I2C_Exit ' clear the address from the buffer
          readcnt = 0                          ' mark as first read

          GoTo I2C_Exit

'-------------------------------------------------------------------------------

I2C_Write: ' I2C write data to us
       datain = sspbuf                   ' put buffer data into array
       rxbuffer[rxbufferindex] = datain
       rxbufferindex=rxbufferindex + 1

       IF rxbufferindex = rxbufferlen Then ' end of buffer transfer 
          wrdata = 1
          rxbufferindex = 0
       EndIF

GoTo i2c_exit

'-------------------------------------------------------------------------------
I2C_Read: ' I2C read data from us

       IF d_a = 0 Then
          txbufferindex = 0
       EndIF

       While stat_bf : Wend                        ' koop while buffer is full

       wcol = 0                                    ' clear collision flag
       sspbuf = txbuffer[txbufferindex]

       While wcol 
             wcol = 0
             sspbuf = txbuffer[txbufferindex]
       Wend

       ckp = 1                                     ' release clock, allowing read by master
       txbufferindex = txbufferindex + 1           ' increment index

       IF txbufferindex = txbufferlen Then         ' all bytes have been tx
          txbufferindex = 0                        ' reset index            
       EndIF

GoTo i2c_exit


'-------------------------------------------------------------------------------

I2C_Exit:
         sspov = 0
         wcol = 0
         wrdata = 0
Return

'-------------------------------------------------------------------------------

'-------------------------------------------------------------------------------
main:
      txbuffer[0] = 12 ' test value

      rxbuffer[0] = 0

      IF sspif = 1 Then
         GoSub i2c_slave
      EndIF

      Select Case rxbuffer[0]
             Case 0
                   ' do something here, turn on LED for example.
      End Select

      GoTo main

End