Pues porque después de 14 horas peleándome con el sistema no me había puesto a "comprender" el código. :P
Efectivamente, el id del principio era el que me generaba el error, ya al ser auto incremental no me dejaba sobreescribirlo. También faltaba una coma detrás del primer $id que, en cuanto la puse, me empezó a guiar acerca del problema.
Así que la cosa, quedando así, funciona perfectamente:
Código:
//Definimos la query
$modificar_datos = "UPDATE productos
SET
nombre = '$nombre',
precio = '$precio',
id_categoria = '$id_categoria',
id_tipo = '$id_tipo',
es_menu = '$es_menu',
es_especialidad = '$es_especialidad',
es_sugerencia = '$es_sugerencia',
WHERE
id_producto = '$id'";
Gracias de nuevo!!