Non riesco davvero a vedere un modo per farlo direttamente usando ORDER BY FIELD.
Tuttavia mi chiedo se potresti fare un JOIN contro la meta table e poi ORDER BY a FIND_IN_SET.
Non l'ho testato, ma si spera che ti dia l'idea:-
SELECT *
FROM `categories`
INNER JOIN meta ON metakey = 'category_order' AND FIND_IN_SET(categories.ID,metavalue)
WHERE `parent` = '0'
ORDER BY FIND_IN_SET(categories.ID,metavalue)
Forse il FIND_IN_SET su JOIN non è necessario