How can you increase the speed of an external GPIO interrupt in stm32f4?
My ISR will enable the timer the first time around and disable it the next time the interrupt is called.


This is not the correct method to measure fast time signals. The microcontroller has timers, and these timers have capture mode.
In capture mode, a rising/falling edge of the input causes the actual timer value to be stored in the capture register. You will have until the next edge to read the timestamp of the edge.
When you have two timestamps you can calculate the time in between.  

This way you are not dependent on the interrupt latency and jitter.  


  The problem (which I found by studying the behavior of a variable) is that when I make the sensor react quickly, my interrupt is generated only once and not when the reflecting surface disappears.


You might have an electrical problem here. Verify if the edges are correct and there is no bouncing.
You could eliminate some electrical problems with the basic digital input filters in ST's timers. But it's better to have a filter in the first place.