I guess it's time to share

I did a project similar to this and I would recommend you offload the logic (scheduling times, etc) and user interface (the LCD) to another machine.

Reduce the code you have to listen and send over serial and allow another computer to tell it what to do (get temperature, turn on vent relay, pump relay, lights, etc). Then you can get rid of the RTC and SD on top of the LCD. Since another machine could read, store, display and do all that.

For the other machine, I'd recommend checking out OpenWRT Linux which works very well with the Lua language and makes it easy to talk to an Arduino. Raspberry Pi is another option. The point there is you'll have much more control over the UI, you could plug it into the internet and then control all this remotely from a webpage or whatever; that would otherwise be very difficult on the Arduino by itself.

Unless you really really enjoy squeezing as much as you can out of the Arduino, I think it'll get old and frustrating quickly as you want to add more features.

If you want to avoid Linux though or a separate machine, you could use a more powerful ARM CPU. I'd highly recommend the mbed platform for this (http://mbed.org/) as it's very nice to use and easy to program, plus has a lot more flash storage for you to use.