If you want an external flash, the Canon EX-series flash is what fits best with a Canon DSLR.
The 420 EX is nice, not too expensive and not too large, but the disadvantage is that it only works in automatic mode - i.e., you can't set the flash output manually. That's especially a disadvantage on the 300D, because that camera itself also doesn't provide FEC (Flash Exposure Compensation) on the camera.
The 550 EX is very good, it's a bit more expensive and bigger than the 420 EX, but yout can set it manually to have more control over the flash output.
The 580 EX is Canon's new top of the line flash, which is the successor to the 550 EX. It has some new features that work especially on the 20D (and 1D Mark II) such as communication about the colour temperature between the flash and the camera, so that the camera can take the flash into account when determining the white balance. The 580 EX is quite expensive.
Memory cards: Just buy any good CF card. You can get CF cards in different speeds, but on the 300D you won't notice much difference between slower and faster cards. Well-known brands include Lexar and SanDisk.