No entiendo bien ese GROUP BY inmuebles.id_inmueble. ¿en tu tabla inmuebles se repite el id_inmueble?
Yo sabría hacer tu consulta usando una subconsulta, pero si tu listado de inmubles es muy largo y tienes muchos miles de registros podría cargar mucho.... Aunque esto siempre se puede cachear en archivos txt por ejemplo
Sería algo asi, con los nombres de tablas/campos que no concuerdan con los tuyos, pero para que veas:
select inmuebles.nombre,(select fotos.imagen from fotos where fotos.id_inmueble=inmuebles.id ORDER BY fotos.principal DESC LIMIT 0,1) as imagen from inmuebles
Por cada inmueble hacemos esa subconsulta que ordena primero la tabla fotos por el campo principal, de modo que si tienes el campo principal relleno de 'si' y 'no' al ordenarlo de mayor a menor cogerá primero alguna que tenga 'si', y si no encuentra ninguna rellenaría imagen con 'NULL'
EDIT: Mira, hice una busqueda en google por alguien con tu mismo problema y en el foro oficial dan una solucion parecida:
http://forums.mysql.com/read.php?115...619#msg-111619