I don't see any reason why it is taking that long. Those joins can be left or inner and be fine either way. Filesort/temp table on a table with 162 rows is nothing. That can actually just be a MySQL optimization.
I think this is grasping at straws, but can you try this query on its own:
SELECT
m.id_topic, m.id_msg, m.body, m.smileys_enabled, m.subject, m.poster_time, m.approved,
t.id_member_started, t.id_first_msg, t.id_last_msg
b.id_board, b.name AS bname,
c.id_cat, c.name AS cname,
FROM fmf_messages AS m
LEFT JOIN fmf_topics AS t ON (t.id_topic = m.id_topic)
LEFT JOIN fmf_boards AS b ON (b.id_board = t.id_board)
LEFT JOIN fmf_categories AS c ON (c.id_cat = b.id_cat)
WHERE m.id_member = 1
ORDER BY m.id_msg DESC
LIMIT 0, 10
Can you keep browsing your forum and keep trying to reproduce it to make sure it is that query. It might be another query that locks the tables and you're just getting the effect on that query.