I'm just wondering if your "problem" isn't really a problem...
first of all, can I ask for clarification? are you saying that the LCD top panel showing number of frames remaining is staying "stuck" at 999? and did you only just notice this with a 4GB card? how about when you use a 2GB or 1GB card?
one thing you should know is that top LCD frame count is an estimate only, based on storage space remaining, JPEG settings and ISO - because JPEG file sizes vary depending on the actual image content.
A JPEG file from your 300D at low ISO might be roughly 2~3MB (Large/Fine setting), meaning a 4GB card might hold over 1000 photos. So when you first start shooting on a blank card, it's possible that you still have over 1000 estimated photos left but the display simply shows 999 (the max displayable number)
note that setting a high ISO means the photos will be noisier, therefore resulting JPEGs will be compressed less efficiently and therefore likely be larger files. this could explain why your file count will decrease noticeably using ISO1600 because each image is taking more space. Simply changing the ISO setting on the camera will change the remaining shot number, as the camera changes it's space remaining calculation
note: on my EOS 40D with 8GB card at lower ISOs, I can shoot on an empty card for a while before the count decreases below the 999 mark, but that's not a sign of a malfunctioning frame count, it just means I still have space for more than an estimated (approx) 1000 frames at current settings.
as long as your photos are being recorded on the CF card, I wouldn't worry about the shot remaining counter with a large card, as long as the number eventually starts decreasing when the card starts to fill up. just remember it's an estimation based on the MBs remaining, not a true count of frames.