I have a two-Arduino system where one drives a motor controller over i2c and regularly pings the other one, which acts as a watchdog. When the second Arduino receives no pings for a while, it assumes that the first one hangs and it should go into busmaster mode and stop the motor.
It looks like this is not currently possible, is it? What do I have to do to go from slave to master?
All you need to do is connect to the motor driver from the "slave" Arduino. The AtMega/I2C bus supports multimaster mode and the wire library supports both master and slave. Whether you are a slave or master depends on the functions you call.
to recover from hangs, you should also consider to use the built-in watchdog timer of the ATmega, although it will not be enough to recover from hardware problems and requires a little patch of the Arduino bootloader. Making the design more complex by adding an additional MCU also makes it less reliable.
When switching to the second Arduino, you have to make sure, that the first one doesn't interfere with the i2c bus (e.g. permanently pulling a line to low). You should put it in a permanent reset state which stops the program and puts all IOs in a high impedance state. Then you can be also sure, that you are the only master on the bus.