It depends when you intend travelling.
As from 27th March 2011, Ryanair.com will be restarting its direct flights from Madrid to Faro. Think they run three times a week.
Otherwise, the alternatives as indicated above are:
1) Bus -
http://www.socibus.es from Madrid Estacion del Sur bus station to Seville Plaza das Armas Bus Station and then either:
i) One of the two daily DAMAS/Eva transportes buses from Seville to Faro
See: http://goo.gl/OcHMV
Did this trip myself back in December 2010.
ii) One of the alsa.es buses from Seville to Faro. (Twice daily at weekends)
2) Train/Bus
As previously stated, AVE train from Madrid to Seville and then bus as above.
As regards travelling from Faro to Granada, bus is the only real option and you will have to travel via Seville again.
Alsa.es operates this route. It requires a transfer between Seville Estacion das Armas Bus Station and Prado Bus Station in Seville.
Current Schedule shows:
Depart Faro: 01:15
Arrive Granada: 11:00
You may be able to get better connections traveling by DAMAS/Eva transportes buses from faro to Seville and then connecting with a Seville to Granada bus.
There are several daily.
As regards cheap hire car at Faro Aiport, this is unlikely. Prices are climbing due to shortage of vehicles and a host of other economic factors.
However, bear in mind that the cheapest price quoted may not be the best once you look at the small print.