What's wrong with my boost converter math?
Everything seems fine, except right at the end.  You are equating the average power delivered by the inductor L, with the average power delivered by the power supply (\$V_{in}\$).  As you found out, this is only true if \$D=1\$ (duty cycle of 100%).  

Simply put, during \$T_{off}\$ the power supply adds its voltage to the voltage that L develops, and share the same current, so the energy delivered to the load HAS to be more than what the inductor delivers (which can't be more than what it accumulated during Ton).

In the general case, during the on-time (\$T_{on}\$) the power supply delivers an energy of \$V_{in}I_{avg}T_{on}\$ exclusively to the inductor L.  All of this energy has to be delivered to the load during the off-time (\$T_{off}\$), because this is supposed to be perfectly cyclical.  But during \$T_{off}\$, \$V_{in}\$ is still delivering current, with the same average as in \$T_{on}\$ (we're calling it \$I_{avg}\$), and that energy \$V_{in}I_{avg}T_{off}\$ is going to the load as well.

So in the end the load gets, per cycle, an energy of \$V_{in}I_{avg}(T_{on}+T_{off})\$, which means the average power \$P = V_{in}I_{avg}\$.  But this is not the same as the average power delivered by the inductor, which is only \$V_{in}I_{avg}(\frac{T_{on}}{T_{on}+T_{off}})\$.

A way to look at it is that, per cycle:


[Total Energy received by the load] = [Total Energy delivered by power supply] = [Energy delivered by the power supply during Ton] + [Energy delivered by the power supply during Toff].
[Energy delivered by the power supply during Ton] = [Energy delivered to the inductor during Ton] = [Energy delivered to the load by the inductor during Toff] &lt; [Total energy delivered to the load].


So your last equation is correct:
\$ P_L=ft_{on}V_{in}\hat{I}_{in} \$

But it just talks about the average power delivered by the inductor, and is not all the average power delivered by the power supply:
\$ P_{PS} = V_{in}\hat{I}_{in} \$

Well, only if \$ ft_{on}=1\$ (100% duty cycle), or Iavg=0 (0% duty cycle).  But we wouldn't even be in the correct operating mode in those cases.