In their best practices for software engineering, ConsenSys has a few very good examples for implementing a "circuit breaker" functionality:
bool private stopped = false;
address private owner;
modifier isAdmin() {
require(msg.sender == owner);
_;
}
function toggleContractActive() isAdmin public {
// You can add an additional modifier that restricts stopping a contract to be based on another action, such as a vote of users
stopped = !stopped;
}
modifier stopInEmergency { if (!stopped) _; }
modifier onlyInEmergency { if (stopped) _; }
function deposit() stopInEmergency public {
// some code
}
function withdraw() onlyInEmergency public {
// some code
}
I think this is something the community would smile upon having. I'm going to implement it myself in the meantime and I'll update this thread with what I end up using.