The design has too many problems to be worth trying to fix. Better is to use a circuit that is designed to work properly and better still is to accept some sense losses in order to increase (not decrease) simplicity and designability.
An N Channel MOSFET (as shown) must have its gate driven above its source by Vgs_operating. Typically this is 3 to 6 volts and is seldom less than 1V with even very low Vgsth MOSFETS. As the source is at V+ = 12V potential when the MOSFET is on (as brhans notes) the gate must be driven ABOVE V+ by Vgs_operating. ie to from 13 to 18 V depending on the MOSFET used. You thus need either a higher voltage than +12V for the 555 to drive the gate (from a bootstrap driver or other source, or to use a P Cannel MOSFET.
Whereas a voltage source can be implemented open loop by using Vout ~= Vin x Dt/T, attempting to use this to set an LED current rather than voltage is approximately impossible (for values of approximately close to "certainly").
Chances are the LED Vf will be slightly more than 2V at 200 mA but if we assume it is 2V as shown then if a current sense resistor dropping 0.1V is used in the LED Cathode to ground connection then an efficiency loss of ~= Vsense/V_LED = 0.1v/2v = 5% is incurred. This is liable to be acceptable enough in reality.
The reasonably low cost and easy to use NCP3065 / NVC3065 has a 0.235V sense voltage. This can be reduced with a few extra resistors. Overall efficiency is not marvellous (see fig 17 & fig 20 in NCP3065 datasheet. It will be higher than shown there as graphs are for 700 mA or higher.
Modern synchronous output ICs for a few dollars will allow lower Vsense.
A hall effect sensor could be used to provide approximately zero loss current sensing.
Overall efficiencies of 90%+ should be achievable.