This might not be it but I see that you use $node as an object at first (title) and then as an array (to get the language) in the make_author_form() method. If $node is an object, then that explains why you cant retrieve $node['language'].
Not sure if I completely understand what you are trying to do but it would be a good idea to use page arguments for it, I think.
function mymodule_form_alter($form_id, &$form) {
  // If $form_id is {node->type}_node_form
  // Then, check for the first argument in the URL and hide/show Preview accordingly
}
                  Amar Ravikumar
                   2010-05-14 09:27:02