If your osCommerce checkout starts behaving badly and bits of info seem to go missing eg billing address then you should definitely try this fix before you tear your hair out completely.
Most osCommerce installs store session information to a MySQL table called (suprisingly) sessions.
Sometimes (I have only seen this twice on umpteen osCommerce sites) the sessions table will become corrupted. The irritating thing is that if this happens it seems that the site will not stop working completely with a useful error message, but instead will continue to work but will behave very strangely.
If your osCommerce site is behaving strangely then try this fix.
Open phpMyAdmin and select your SQL database and then copy and paste the following into the SQL section and hit run:
REPAIR TABLE <code>sessions</code>;