Just for giggles, have you tried changing it to a US keyboard and see if that works?
Also, wired keyboard or wireless? If wired, have you tried changing to a new USB port on the computer?
Is this happening in Terminal or in the Windows Manger you have installed?
US keyboards (and Mac layouts) have @ as the Shift-2 key anyway, but switching to US then back to the standard UK keyboard layout might kick it into using the correct keymap.