After hours of researching I have finally found the problem and managed to fix it. All I can say is please bear with me...
There are many, many solutions to this problem on the forums with varying results. Many will suggest deleting keychain passwords, resetting DHCP, turning bluetooth off and on before sleep and so on. However I specualte that any succesful solutions are pure fluke for the following reason:
What is happening is due to a feature of 802.11d. (Yes, d not n).
When your wifi is restarted, such as after a wakeup from sleep, your laptop will request a country code from the nearest router. It does this to set the available channels that your wireless card can scan for. Each country has different legal channels that are allowed to be used due to interferience with law enforcement etc. If the country code that is picked up is wrong, then it is highly possible that the channels included in 802.11n are disabled.
To give an example my laptop was setting it's country code to YE (which I can only assume is Yemin) from a wrongly configured or imported neighbour's router. This disabled all channels above channel 12. This meant 802.11a/b/g worked fine but the higher channels on 802.11n were disabled.
HOW TO FIX
You need to force your laptop to rescan for a country code and make sure the first network it sees is one with a correctly configured country code. This is also why the problem is intermittant, as moving your laptop from room to room or from interferience the first router it detects can vary. I increased my chances of finding the correct country code by setting up my phone to act as a router (referred to as tethering or a portable hotspot) and placing it next to my laptop when I woke it from sleep. This reset the country code to GB and allowed me to then connect to my home network.
PS - To check your current country code go to Applications - Utilities - System Information. Select Wi-Fi under Network on the left. Your country code and therefore supported channels are shown on here.