Here's what I would suggest:
You have the form which initially includes only the first select list. It looks like this:
<form action="the_next_page.php" method=POST>
<select name="list_1" onChange="listChanged();">etc.</select>
function listChanged() {
var f = document.forms[0];
f.action = "this_page_again.php";
f.submit();
}
In the php page which makes this form, you check to see if you have any input. If you do, you put the text fields back into the form, and you show the second select list based on the choice made in the first.
That way you do go back to the server, so you don't have to send all of your data to the client, but you keep the existing form data also.
-Keegan