ya probaste esta consulta en tu base de datos???
Intenta correrla en tu consola o linea de comandos, o el programa que utilizes para checar tus consultas.
Si no te corre prueba asi a ver si asi te corre bien.
Código PHP:
$sql="select DATE_PART('MONTH',e.fecha_despacho) as mes, DATE_PART('YEAR',e.fecha_despacho) as anio, m.cantidad_aprobada from movimiento as m, egresos as e where m.id in ( select e.id from egresos as e where (DATE_PART('MONTH',e.fecha_despacho)>=$mes_inicio and DATE_PART('MONTH',e.fecha_despacho)<=$mes_final) and (DATE_PART('YEAR',e.fecha_despacho)>=$anio_inicio and DATE_PART('YEAR',e.fecha_despacho)<=$anio_final)) and movimiento.id=egresos.id order by anio, mes";
Perdon es que como ahorita estoy usando mysql y tiene un buen ke no uso postgres te revolvi las cosas :P, nuevamente perdon el month() se usa en mysql.
Espero que esto te sirva. si no ya veremos como resolverlo.