When you have a look at this section:
else
if (pwm_inches > "000") then
pwm_distance_i <= pwm_inches;
end if;
pwm_count := 0;
pwm_inches <= "000";
end if;
The pwm_inches is reset at 000 as soon as the PWM pulse ends. You probably won't see anything on the output because of that. I think that your second process should use the pwm_distance_i signal instead, that should keep the value of the measured distance after the PWM pulse ends:
process(pwm_distance_i )
begin
case pwm_distance_i is
when "000"=>
And also in that last process, you assign led to 1 in the others section, but never to 0. If you want the led signal to be 0 when you have a valid measured distance, you can assign a default value before the case:
process(pwm_distance_i )
begin
led <= '0';
case pwm_distance_i is
when "000"=>