There are a number of problems with this page, all of which add to friction and confusion.
I think the best solution would be to encourage registration to your site in other ways, then once someone has registered make sure their signed in state persists (use cookies and sessions etc. - look at how Code Igniter does it). Then when the user lands on this page you can pre-populate the form and remove all the other stuff that is unnecessary to a signed in user.
You can also give the user the option to register during checkout, either by adding a checkbox to the form or by asking them on the confirm page. Then generate a random password and use the email from checkout to create an account.
Something else you need to do id remove the unnecessary fields. For example, the 'salutation' field (Mr or Mrs) is unecessary in order to do anything and adding it in merely clutters things. You can use just the following:
Name;
Address 1;
Address 2 (optional);
Town;
Postcode;
Country;
Email;
Phone;
Then, remove the unnecessary forms.
Let someone checkout anonymously with their email address but always store the transactions with that email address. This way anonymous checkouts will find their transactions when they next sign in OR when they actually decide to sign up in the future. Always explain to the user what you are doing and give the choice if you are going to store data.
Also, get rid of the newsletter form in the side bar, this should also be an option given on the order confirmation page, or as part of the main form.
You can also consider a service like paypal, that allows for transactions to be processed without even providing an address, which makes for a very smooth user experience.