Why does my stop-band filter attenuate other frequencies?
Filters always have an inherent "roll-off" in their frequency response, because you can't practically realize a pass-band that's a perfect rectangular function. For a low-pass filter, the point where the magnitude of your frequency response drops to -3dB is called the pass-band and everything beyond is called the stop-band (technically, everything beyond the corner frequency, but we'll take the corner frequency to be the -3dB level). How fast your frequency response attenuates beyond the pass-band is dependent on the filter length.

If you look at the frequency response of your filter, ht, you'll see that it drops to -6dB at 1000 Hz:



So it makes sense that the power drops by 6dB after filtering, which you see in your figure as a halving in amplitude.

If you had looked at the documentation for the fir1 function that you used, you would've realized this too (emphasis mine):


  B = fir1(N,Wn) designs an N'th order lowpass FIR digital filter
      and returns the filter coefficients in length N+1 vector B.
      The cut-off frequency Wn must be between 0 &lt; Wn &lt; 1.0, with 1.0 
      corresponding to half the sample rate.  The filter B is real and
      has linear phase.  The normalized gain of the filter at Wn is
      -6 dB.


Now to create sharper filters, with responses that get pretty close to a rectangle, you'll have to use IIR filters, which come with their own host of problems with stability, etc., but definitely an option. You can see my answer here for some ideas on implementing a discrete-form 2, second-order section IIR filter that gives very sharp corners. The example there is for a band-pass filter, but you can read up the docs for the functions used there and implement a low-pass version yourself.