BJTs are much more suitable than MOSFETs for driving low-power LEDs and similar devices from MCUs. MOSFETs are better for high-power applications because they can switch faster than BJTs, enabling them to use smaller inductors in switch-mode supplies, which increases efficiency.
If you are sure about your hook-up, you are simply using the MOSFET the wrong way. In this I assume you have the negative of the 12V connected to the same ground that your sometimes present 3.3V has its negative.
The N-MOSFET looks, on the inside, more like this:
simulate this circuit – Schematic created using CircuitLab
So your set-up turns on the LED through the diode inside the MOSFET, because you connected the positive terminal entirely on the wrong side. It's called diode-conduction and that needs no gate voltage at all.
For your first experiments with MOSFETs, using them as switches, you need to make sure the Source of an N-MOSFET is always at the 0V potential, for a P-MOST (not yours!) the source should always be at the supply voltage.
So your schematic should look like this:
simulate this circuit
Later you can progress to circuits that use MOSFETs that do not connect their sources to the correct voltage points, once you start understanding what's going on. For now, stick to the rule above.
Best Answer
Yes, that's perfectly valid (should be a base resistor on the BJT, of course).
Another method you might use could be to use a P-channel MOSFET with a pull-down resistor (just the complement of your circuit). However this does not work if the power is removed from the micro since the protection circuit will drag down the output pin. Your circuit also allows the micro to switch a higher voltage than its supply (for example a 3.3V output switching a 5V or 12V circuit).
Edit: Added are two additional circuits- one using another NPN transistor which will work with power removed from the micro and using an opto as you suggested. Both are high-side switches and the opto one adds isolation while actually simplifying the circuit.
simulate this circuit – Schematic created using CircuitLab
A third approach is to use a depletion mode MOSFET or a JFET but that's a lot trickier because you have to come up with a negative voltage to turn the transistor off. It does work in the absence of any significant voltage supply though. Another disadvantage is that power devices are unavailable in P-channel type.