Already answered in FAQ:
http://www.tomshardware.co.uk/forum/245454-15-crossfire-faqs
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 clock to operate with the 256 one , 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.