Yes they will work.
http://www.tomshardware.com/forum/245454-33-crossfire-faqs
Do the cards have to be same model?
I answer it with an example:
You have a NVIDIA Geforce 7800GTX 256, and you want to add another card , the second card has to be 7800GTX exactly.
But what about the memory? Can you add a 7800GTX 512 and use that with 7800GTX 256?
It's recommended to use a 7800GTX 256 with a 7800GTX 256 and 7800GTX 512 with 7800GTX 512.
However you can use a 7800GTX 256 with 7800GTX 512 , BUT the 7800GTX 512 will lower its RAM to 256MB to operate with the other card, so it wont have its true power. (This option isn't recommended. )
What about brands ?
Well the brand doesnt matter , again for example , you can use a XFX card with a EVGA card , or a SAPPHIRE card with a DIAMOND card , just make sure they have the same memory and same clocks.
What will happend if 2 cards have the same amount of memory but one has higher clocks than the other?
One of the best ways to learn is to make examples.
You have a 8800GT(Normal edition,no OverClocks) and you want to add another 8800GT(Which is OverClocked),then:
1_The OverClocked one will lower its clocks to reach the Non-OverClocked card.
2_You can OverClock your card(The one that has Stock frequencies) and reach the OverClocked card.
Remember, you cant ALWAYS OverClock the normal card to reach the other card,because it may not OverClock that much and may become unstable.
WARNING:There are many exceptions in Computer Hardware, for example "Mousemonkey" a member of this forum has told me that when he puts his ASUS 7900GT card (Which is at stock speeds) with a XFX 7900GT(A OverClocked card) the ASUS one raise its clock to reach the XFX one which is an exception and as i said exceptions are alot in Computer Hardware.