I'm pretty sure Vector3 a struct for both, a class would give a sligtly different error right when you assign X.
Regardless, I can reproduce the problem now with XNA 3.1, possibly it's some changed behavior. What you have to do to fix it is add
result = new Vector3();
at the top of the function. It just seems that the compiler is not smart enough to realize you're indeed assigning all three components. I suspect the standard requires the initialization with new Vector3() anyway, but I'm not a language lawyer.