Ik zie niet echt een manier om het direct te doen met ORDER BY FIELD.
Ik vraag me echter af of je een JOIN kunt doen tegen de metatabel en dan ORDER DOOR een FIND_IN_SET kunt doen.
Niet getest, maar hopelijk geeft het je een idee:-
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)
Mogelijk is de FIND_IN_SET op de JOIN niet nodig