Для того, чтобы понимать это, надо понимать, что возвращает mysql в $result.
В (!$result) будет true только в том случае, если в запросе у тебя ошибка. 
Вот это должно сработать
function checkpass ( $login, $password ) {
  $result = mysql_query("SELECT id, login, password FROM info WHERE login=\'$login\' AND password=\'$password\'");
  if ( mysql_num_rows( $result ) ) return mysql_fetch_array ( $result );
  else {
    header ("Location:badpass.php");
    exit;
  }
}
Ты этим паролем только одну страницу закрываешь?