Just offset the control polygon of the Bezier curve by a distance of $w/2$ in each direction. As others have pointed out, this is an approximation. Position will be correct at 3 points, and the end tangent directions will be correct. Test the deviation from the true offset. If the deviation is too large, divide the original Bezier curve into two, and apply my suggested offsetting technique to the two pieces. Keep subdividing, offsetting and testing until you're happy.
To test the deviation between the approximate offset and the true one, I'd recommend an approach based on point sampling. In other words, measure the deviation at some sample points, and assume that the maximum deviation is the maximum of the deviations at these sample points. This is not really correct, of course, but it will work OK in practice. For quadratic curves, around 10 or 15 sample points is probably enough. So, take 10 points along your offset curve, measure the distance from each of them to the original curve, and compare these measured distances with the desired offset distance.
So, now, the remaining problem is how to measure the distance from a point $Q$ to a Bezier curve $C(t)$. The key is to find the "foot" of the normal from $Q$ to the curve $C$. This normal will be perpendicular to the tangent vector, so, at the "foot" point, we have:
$$(Q - C(t))\cdot C'(t) = 0$$
Use your favorite numerical root-finder to solve for $t$