Usa este codigo.
Código PHP:
<?php
$link = mysql_connect($host,$usuario,$password);
mysql_select_db($bd,$link) or die (mysql_error());
$result_sub = mysql_query("SELECT * FROM subsectores where id_sector=\"$row[id_sector]\" ", $link);
if(!mysql_error() && mysql_num_rows($result_sub)>0)
{
while($row_sub = mysql_fetch_assoc($result_sub))
{
echo "<input name=\"check_sub[]\" id=\"check_sub\" type=\"checkbox\" value=".$row_sub["id_subsector"]." /><label>".htmlentities($row_sub["nom_subsector"])."</label>";
}
mysql_free_result($result_sub);
}
?>
El código que usas llama 2 veces a mysql_fetch_array() por cada ciclo y sólo muestras 1 vez, así que sólo obtienes la mitad de los registros.
Además, la pregunta de si hay fila se hace sólo 1 vez, como hago en el if. Y he agregado un chequeo de error.
Es mejor usar mysql_fetch_assoc, que trae un array mas pequeño con sólo los nombres de los campos.