Is there a rule of thumb for including the value of a foreign key in a table to avoid large joins?
Don't denormilize, keep 2 tables (cars and colors) whatever tables size.
I think that you don't need to select 10 millions with one query but if you realy need it, you can do it by batch.
I don't know your problematic but by default, never denormilize.

If you have a problem with big tables you can expose it but i am pretty sure that denormalization will be not the solutiuon.