empieza a debuggear tu codigo, seguro que con esta condicion no te muestra dicha propiedad?
    
Código SQL:
Ver original- SELECT  
-         propiedad.codigo_propiedad,  
-         propiedad_reserva.START, 
-         propiedad_reserva.END  
-   
- /*,propiedad_tipo.nombre as tipo,  
-                 propiedad_categoria.nombre as categoria, 
-                 regiones.region_ordinal, 
-                 regiones.region_nombre, 
-                 provincia.provincia_nombre as provincia, 
-                 comunas.comuna_nombre as comuna, 
-                 propiedad_reserva.start, 
-                 propiedad_reserva.end*/ 
-  FROM propiedad 
-       INNER JOIN propiedad_tipo ON propiedad.propiedad_tipo_id = 
-        propiedad_tipo.id 
-       LEFT OUTER JOIN propiedad_reserva ON propiedad.id = 
-        propiedad_reserva.propiedad_id 
-       INNER JOIN propiedad_categoria ON propiedad.categoria = 
-        propiedad_categoria.id 
-       INNER JOIN regiones ON propiedad.region = regiones.region_id 
-       INNER JOIN provincia ON propiedad.provincia = provincia.provincia_id 
-       INNER JOIN comunas ON propiedad.comuna = comunas.comuna_id 
-   
-   
-  WHERE  
-   
-  NOT EXISTS (SELECT * FROM propiedad_reserva WHERE propiedad_reserva.start>= '2017-10-3' AND propiedad_reserva.END <= '2017-10-7') 
Ahora estas haciendo un left outer en la tabla de propiedad reserva, usando el id_propiedad, si la propiedad tiene 2 valores en tu tabla va a aparecer estas 2 veces aunque en el where le pongas que no te tome la segunda, porque? bueno al poner el where le estas diciendo que quite la propiedad que tiene el rango, pero la otra no la quitas por eso sigue apareciendo. 
Podrias hacer el left outer con esto:     
Código SQL:
Ver original- SELECT  
-         propiedad.codigo_propiedad,  
-         propiedad_reserva.START, 
-         propiedad_reserva.END  
-   
- /*,propiedad_tipo.nombre as tipo,  
-                 propiedad_categoria.nombre as categoria, 
-                 regiones.region_ordinal, 
-                 regiones.region_nombre, 
-                 provincia.provincia_nombre as provincia, 
-                 comunas.comuna_nombre as comuna, 
-                 propiedad_reserva.start, 
-                 propiedad_reserva.end*/ 
-  FROM propiedad 
-       INNER JOIN propiedad_tipo ON propiedad.propiedad_tipo_id = 
-        propiedad_tipo.id 
-       LEFT OUTER JOIN  
- (SELECT id_propiedad, reserva_end, reserva_start FROM propiedad_reserva WHERE propiedad_reserva.start>= '2017-10-3' AND propiedad_reserva.END <= '2017-10-7') 
- propiedad_reserva ON propiedad.id <> 
-        propiedad_reserva.propiedad_id 
-   
-   
-       INNER JOIN propiedad_categoria ON propiedad.categoria = 
-        propiedad_categoria.id 
-       INNER JOIN regiones ON propiedad.region = regiones.region_id 
-       INNER JOIN provincia ON propiedad.provincia = provincia.provincia_id 
-       INNER JOIN comunas ON propiedad.comuna = comunas.comuna_id 
Aqui si encuentra el 157 en el rango de fechas, no lo va a incluir en el join, prueba y comenta