Can I use one pin as I2C clock or data AND as GPIO?
Slaves do not always react well to illegal I2C traffic. They should be able to recover from it, but in fact some do not. I have seen slaves lock up after receiving a simple Start-Stop with no traffic in between. Interrupting ongoing I2C traffic can be potentially even more dangerous. So, do not do this unless you know that the slaves can recover from every possible illegal I2C transaction that may be thrown at them. This includes throwing away any partial data that they might get if the transaction is interrupted.

Additionally, make sure that the master can properly sense a button press. If the master supports clock stretching, you cannot use this scheme because a button press may be perceived as clock stretching. A button press could also be perceived as an ACK from the slave; consider what would happen under this circumstance. 

Also, if the SDA button was pressed during a long period of 0s being sent, the button press could be missed by the controller.

This scheme is best avoided unless there is absolutely nothing else to do.