No es el Javascript el que falla, sino la forma de tomar la información desde $_POST, estás intentando leer, por ejemplo, ['selTipo_contacto'] como array, pero, en realidad es una cadena y los diferentes elementos están como:
['selTipo_contacto']
['selTipo_contacto_1']
['selTipo_contacto_2']
Entonces, para recorrerlos todos sería algo como:
Código PHP:
Ver originalfor($i = 0; $i <= $numRows; $i++) {
// Primero necesitamos saber cómo acceder a los campos
$sufijo = ($i == 0) ? '' : "_$i";
// Si es la primera pasada, entonces los campos no tienen sufijo
// Si $i es mayor que cero, el sufijo es guión bajo, seguido del valor de $i
// Ahora, para acceder a cada campo:
// En lugar de poner $_POST['txtPersona_contacto'][$i]
// Debes usar: $_POST['txtPersona_contacto' . $sufijo]
$sql_ins2 = mysql_query("INSERT INTO contactos (id_posada, tipo_contacto, persona_contacto, telefonos, correo_contacto) VALUES ('$id_posada', '".$_POST['selTipo_contacto'.$sufijo]."', '".$_POST['txtPersona_contacto'.$sufijo]."', '".$_POST['txtTelefonos'.$sufijo]."', '".$_POST['txtCorreo_contacto'.$sufijo]."')") or
die ("Error en Insert : ".mysql_error()); }
El único problema sería con txtTelefonos, que es un array y después es una cadena cuando tienes txtTelefonos_1, etc.