The 2 major concerns here are timings and dual channel.
The speed drop from 800 to 667 will not be that substantial, what you need to take care over is not to mix the 1GB and 512MB on the same channel. Typically, slots 1 and 3 are channel 1, and slots 2 and 4 are Channel 2. The 1GB modules will need to go into slots 1 and 3, and the 512MB modules into 2 and 4. Or vice versa, as long as they don't share the same channel. If you mix the two types on the same channel, you'll run the memory Async, meaning it'll run at half speed. When you boot the PC up, it will say if it's working in dual channel or Async.
The other problem may be that of timings. Things like T1 and T2, CAS, etc. The 1GB modules will be slower, and need relaxed timings (despite the higher frequency), but the motherboard can not operate independent timings for each channel, so it will try and run the faster timings of the 512 modules on the 1GB, resulting in instability. If the modules can take it, all well and good, if not, it may cause the system to crash a lot. If you have access to memory timings, make sure to match them to the slowest (eg, the highest CAS and T latency values). The motherboard should be able to adjust automatically if it's not setup to use manual timings, it's just something to bare in mind.
As far as extra memory is concerned, unless you actually need it, you won't see a huge difference.