Pongo un ejemplo mas simple, hice un trabajo nuevo y mas simple para demostrarlo.
  Index.html  Código HTML:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
	<head>
		<title>Ajax</title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
		<script type="text/javascript" src="ajax.js"></script>
	</head>
	
	<body>
	
		<table>
			<tr>
				<td>
					<div id="contenido">
						<!-- Aca se va a cargar el contenido mediante ajax -->
					</div>
				</td>
				<td>
					<div>
						<ul>
							<li><a href="javascript:Enviar('cargar1.php','contenido')" title="Enlace 1">Enlace 1</a></li>
							<li><a href="javascript:Enviar('cargar2.php','contenido')" title="Enlace 2">Enlace 2</a></li>
							<li><a href="javascript:Enviar('cargar3.php','contenido')" title="Enlace 3">Enlace 3</a></li>
						</ul>
					</div>
				</td>
			</tr>
		</table>
	
	</body>   Cargar1.php  Código PHP:
    <?php
include("conexion.php");
 
$consulta= "select id, opcion from lista_paises order by opcion asc";
$resultado= mysql_query($consulta);
?>
 
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
 
    <script language="JavaScript" type="text/JavaScript">
        $(document).ready(function(){
            $("#pais").change(function(event){
                var id = $("#pais").find(':selected').val();
                $("#estado").load('genera-estado.php?id='+id);
            });
        });
    </script>
</head>
 
<body>
    <table>
        <tr>
            <td>Pais:</td>
            <td colspan="3">
                <select name="pais" id="pais" style="width:223px">
                    <option value="0" selected>Selecciona</option>
                    <?php
                    while ($fila = mysql_fetch_array($resultado)){
                        echo "<option value='" .$fila['0']. "'>" .$fila['1']. "</option>";
                    }
                    ?>
                </select>
            </td>
        </tr>
                        
        <tr>
            <td>Estado:</td>
            <td colspan="3">
                <select name="estado" id="estado" style="width:223px">
                    <!-- Aca se cargan los estados dependiendo del pais seleccionado -->
                </select>
            </td>
        </tr>
    </table>
</body>   
   genera-estado.php  Código PHP:
   
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 
<?php
 
include("conexion.php");
$valor=$_GET['id'];
 
$consulta = "select * from lista_estados where relacion='$valor' ";
$resultado= mysql_query($consulta);
while ($fila = mysql_fetch_array($resultado)){
    echo "<option value='" .$fila['0']. "'>" .$fila['1']. "</option>";
};
 
?>    
  
Y el archivo ajax que haca cargar los formularios sin recargar la pagina:  
 Código HTML:
 function ajaxFunction() {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
return xmlHttp;
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
return xmlHttp;
} catch (e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
} catch (e) {
alert("Tu navegador no soporta AJAX!");
return false;
}}}
}
function Enviar(_pagina,capa) {
var
ajax;
ajax = ajaxFunction();
ajax.open("POST", _pagina, true);
ajax.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
document.getElementById(capa).innerHTML =
ajax.responseText;
}}
ajax.send(null);
}