Well I have had a good read on Normalisation and seem to completely understand what I have been doing wrong.
I am going to rebuild my database from the ground up. With these rules:
Naming convention for tables, queries, forms, reports and modules.
No table level lookups (lets leave that to the forms)
Redefined PK/FK and field name descriptions
Only use number data types for when calculations are required.
What do you think?