per il "discorso form" esistono 2 metodi (che io sappia), ma non sono neanche sicuro..
Il primo, quello + macchinoso, è quello di tenere i dati in sessione e ogni volta che disegni il form controllare se esistono le risposte e riproporle (ad esempio sui campi di testo)
codice:
echo '<input type="text" nome="cognome" value="'.$_SESSION['cognome'].'">';
Il secondo sinceramente non l'ho mai usato, ma so che si può giocare con la cache degli header della pagina.

Per il secondo problema invece, io farei semplicemente l'unset della sessione che non ti serve +.
Ad esempio se stai curando un ecommerce metti tutti i prodotti acquistati in $_SESSION['carrello'], e alla fine unsetti il carrello con
unset($_SESSION['carrello']);

spero di esserti stato utile