First, in the Bitbang I2C sample for the Uno is there a particular reason pins digital 2 & 3 were chosen as the data and clock? "Normally" it's analog pins 4 & 5. I noticed there is an issue with the Mega not allowing Analog pins to act as digital pins but that isn't an issue on the Uno's (that I noticed) .
Second, is this code for a particular I2C device? Why two calls to "i2c_tx_string" with arguments 0xCC and 0x33? I would have thought the second call would have been a call to i2c_rx_string instead (but there is no reason to set the buffer to a value).