The output of this circuit doesn't look bad until the input is above around 20 mV, then the first stage starts to clip. You're going to have to look at the biasing starting with the first stage, and you may want to look at using feedback to control the gain, reduce distortion and improve the bandwidth.
The resistor values for the first stage bias are rather high, if you are trying to keep the input impedance high you might look at using bootstrapping.
Additional:
Now that you posted the requirements I took another look at it and I have a working simulation that I believe meets them. As this appears to be schoolwork I'm not going to just post it but rather give you some direction on a design method.
You have a maximum current draw and number of stages, so start there. You need to divide that current among the stages so get a rough idea of how much each one should get. They don't need to be evenly divided.
Once you've got that you need to figure out how much gain you want for each stage to get to the required total gain.
Then you have the required output voltage and impedance. Start with your final stage, and get it working. Feed a signal directly into it that will drive it to the desired output and bias it to get the current, output voltage and impedance you need.
Once you get that working, connect the stage before it and feed the signal to that, reducing it to account for the stage gain. Figure out the collector and emitter resistances you need to get the gain and current while keeping the output offset centered for maximum swing. Get that working and then add the first stage and do the same with it, this time keeping in mind the input impedance as well.
Check to see if it meets all the requirements and adjust as necessary. If you need to know how to check input and output impedance leave a comment and I will explain that.
Also note, I did not need to use bootstrapping or feedback to get it working. It could possibly be improved with them but you shouldn't need them to meet the design constraints.