Un detalle al margen de tu problema puntual:
¿para que registras unas variables en una sesión .. y luego igualmente las propagas por el URL?
Me refiero a esto:
Código PHP:
$id = $row[id];
$cliente = $row[cliente];
$titulo = $row[titulo];
$domicilio = $row[domicilio];
session_register('id');
session_register('cliente);
session_register('titulo');
session_register('domicilio);
//Muestro en pantalla
echo "<table>
<tr>
<td><a href=\"destino.php?id=$id&cliente=$cliente&titulo=$titulo&domicilio=$domicilio\">
De hecho en destino.php deberías tomar esas variables de la sesión .. no del URL .. por ende están de más en el URL:
><a href=\"destino.php?id=$id&cliente=$cliente&titulo= $titulo&domicilio=$domicilio\">
En resumen .. o propagas tus variables por el URL o por sesiones .. pero no tiene sentido hacerlo en ambos casos.
El uso de sesiones que haces es incompatible . .no puedes usar session_register() para crear una variable de sesión. Debes usar los arrays superglobales:
$_SESSION['nombre_variable']="valor";
a su vez no olvidar usar session_star() antes de hacer esas asignaciones.
Por otro lado en destino.php no sé si haces session_start() .. pues lo requieres para intentar acceder a las variables de sesión en $_SESSION.
------------------
Sobre tu problema puntual .. lo que se suele hacer en esos casos es presentar en tu formulario HTML todos los campos con sus valores pre-establecidos (usando la propiedad value="" de los mismos) para que tomen el valor original y hacer un "update" a todos los campos de tu tabla .. los que modifiques así se veran afectados y los que no modifiques quedaran con el valor que tenían (re-escribiendose).
Esto puede ser "engorroso" hacerlo ..pero lo haces una sola vez. Tal vez implementar una función que vía arrays por ejemplo o las funciones de Mysql própias veas los nombres de los campos de la tabla y asignes con los valores de tu formulario "tal vez" por orden numérico .. o algo así te complique mas pero podrías intentarlo.
Un saludo,