I don't agree that it is well accepted that the way to typeset a value with units is to separate the number from the units by a space, and write the units in an upright font outside math.
This strategy leaves out a lot of useful cases, like powers (e.g. 3.14 m²), for which you need further workarounds like typing standalone exponents.
The correct answer is of course siunitx (Joseph Wright answer).
However when, working with non latex experts it is difficult to convince them to use such fancy packages or learn new syntax.
As a compromise, what I do it to make all the quantity math and use commands inside math if necessary.
So examples:
The lenght is \( 20~\mathrm{m} \).
The surface is \( 20~\mathrm{m^2} \).
The speed is \(\sim 17~\mathrm{km/s} \)
The Bohr energy is \( 1.0~a_0/\hbar \)
The ratio is \( 2.3~\frac\text{eaten pears}\text{sold bananas} \)
This has several advantages, one is that SI units generally can be entirely contained inside mathrm, exponents are natural, one can use fractions, text can be reintroduced by \text and, to your points, greek letters can be used.
\(420~\mathrm{\mu m}\)
A defect is that mu appears slanted here (mathrm is ignored for mu), but I am not even sure that the slanted result is a real deviation from the SI rules.
In any case this can be corrected in many ways (packages or using textmu or `\upmu from the upgreek package).
\(420~\mathrm{\text\textmu m}\)
Final example and result:
spot sizes of \(\sim 420~\mathrm{\text\textmu m}\) and fluences of \(4.8~\mathrm{mJ/cm^2}\)..

siunitxoverSIunitsas that package is being actively maintained and developed. – Sharpie Aug 19 '10 at 05:02