Se supone que tu consulta devolverá sólo una fiula no? (un solo usuario). La función mysql_fetch_array() (Lee el manual por favor: 
http://www.php.net/mysql_fetch_array) devuelve una a una las filas del resultado, y cuando se acaban empieza a devolver un valor booleano false. En tu código llamas 3 veces a esa función, y sólo en la primera llamada (la que usas para ver si hay registros) realmente se devuelven los resultados. En las otras no.  
Para ver l cantidad de filas devueltas por tu consulta usa la función 
mysql_num_rows(). Luego asigna a una variable $datos el resultado de la función mysql_fetch_array(). Esta variable se convierte en un array con los datos de la fila devuelta (los datos de tu usuario).    
Código php:
Ver original$consulta= "SELECT * FROM principal WHERE rut_proveedor='$nombre' and codigo_bip=SHA1('$clave')";  
 
//checas si devuelve un resultado la consulta  
  // Asignas la fila a una variable
 
  $_SESSION['user'] = $row['nombre']; //recojo en una sesion el nombre del usuario  
  $_SESSION['password'] = $row['clave']; //recojo en una sesion la contraseña del usuario para identificarse  
 
 
   //y todos los demas campos que deseas mostrar. 
}
  
Saludos,