CPU work it out yourself
www.en.bitcoin.it/wiki/Mining_hardware_comparison1.GPU if you have it and electric is free then its worth running
2.if you need to pay for a GPU and electric is free try to get a good balance such as ATI 5850s powerful but use a fair amount of power hence people are selling them
3. if your paying for power and a GPU then buy Newer models 7870s and such as there high hash power for low power consumption
4. pretty universal dont buy Nvidia as there just not worth it compared to ATI/AMD card nvidia use more power and achieve lower hash rates by a rather large %
if you want to get the best of the best look into buying FPGA cards (mining ones not programing ones) or ASICs