Change block definition before saving to the database.
$blocks: A multidimensional array of blocks keyed by the defining module and delta; the values are blocks returned by hook_block_info(). This hook is fired after the blocks are collected from hook_block_info() and the database, right before saving back to the database.
$theme: The theme these blocks belong to.
$code_blocks: The blocks as defined in hook_block_info() before being overwritten by the database data.
function hook_block_info_alter(&$blocks, $theme, $code_blocks) {
// Disable the login block.
$blocks['user']['login']['status'] = 0;
}