As for act3d file - generally speaking, you'll want to be able to assign different materials (= fx files) to individual submeshes, not to the entire actor. So ideally the act3d file would need to contain some nested definitions, like:
NAME = "trinity"
; blah blah
MESH_NAME = "head"
EFFECT = "something.fx"
Currently the ANIMATION blocks work like that, so that might be a good starting point.
Other way is having the fx embedded directly in .X files. There is a standard .X template for that, I'm not sure about exporter support, though.
And of course, it would be nice to have a script method for switching the material at runtime (much like the SetTexture method works now).