Be aware that I2C does not have any timeout mechanism.
I have seen a large number of cases where people mux multiple devices on the I2C bus, where a small glitch is generated during the mux event.
A number of times I've seen systems that hang because a transmission in progress is interrupted. The slave gets hung in a state where it is holding the data line low (It was sending logic 0 at the last clock cycle), and continues to hold the line low, as it is waiting for more clock cycles. Most masters won't then try to communicate to this device, as they see the bus as busy. If the master is a dedicated I2C device, this can lead to a hung bus, that can't be cleared except by power down. If the master is a device you have programmed, you can sometimes work around this by sending the device clock signals until the bus is free, and then transmitting the equivalent of a start followed by a stop. (In other words, pull the data line low with clock high, and then release the data line.)
Just be sure to look at the signals on both sides of the mux when it is switched (using an oscilloscope), and capture a number of events to make sure you don't generate glitches. Also try to time the switch so that a communication that is in progress is not interrupted.