devi ordinare prima la tabella per post_time desc. con la versione 4.0 e senza le query annidate puoi risolvere con una tabella temporeanea. sono due query

codice:
create temporary table temp
select * from posts
order by post_time desc;

-- a seguire ora fai la seguente query:

select * from temp
group by topic_id;
Avendo la tabella temp il campo post_time ordinato in modo DESC, la seconda query con il group by ti pesca l'ultimo record inserito per ogni topic_id

se provi con phpmyadmin devi mettere entrambe le query nella stessa finestra di query. le tabelle temporanee vengono cancellate con la chiusura della connessione.