we've been with James villas a few times, but have also booked through a few independant ones. Those based in the actual country / resort offer good deals.
choose a resort you like the look of from the brochures, or have a look on-line, then do a search for villa's in that area on google. you can then check if they're ABTA bonded etc.
most will book flights etc for you, but it will probably work out cheaper for you to do it yourself. Getting a taxi at the airports easy enough too.
praia de luz, alvor, and portimao were all very nice.