PWM is the correct answer. You need the freewheeling diode and proper layout anyway, even if you switch once a year. So why not switch 10000 times per second?
With PWM, current varies in triangular waveform. Use high enough frequency, and force ripple becomes low enough not to matter (make dI = 10% of DC current or so. dI = difference between maximum and minimum current. Mechanical force is relative to current). With high enough frequency, the thing operates in CCM, meaning current is never zero (which is what you want to avoid force ripple, of course). Then the formula for duty cycle is easy: D = Vout/Vin. So in this case, simply 50%.
Efficiency is good, too. For even better, you might want to consider synchronous rectification because even with a schottky diode with say Vf=0.4V, efficiency will be diode-limited to (3-0.4)/3 = 87%. But that's not bad compared to the resistor idea.
In general, high-efficiency strategies help with miniaturization because you don't need the space for heat sinking / dissipation. Also eases the design. In this case, it's a total no-brainer as you need all the components there anyway. I'm assuming you are using microcontroller or similar which can easily produce the square wave.