Sorry about this ppl - it is essentially duplicated info but Ive had 3 phone calls today and lots of comments from the local 'dweenofurklers' on this one. Google indexes these forums with a high 'goodness' factor meaning that results are high up the table.... Hopefully forum mods will mark this sticky for a while and will save me and others from a lot of newbie panic questions :)
the Atmega328 is ONLY a drop-in replacement for the atmega168 IF:
you have a recent arduino IDE release (eg : 0015... actually you can get round this but DONT!!! - just upgrade to 0015.. its less grief)
you have avr-gcc version 4.3.x
Earlier versions of avr-gcc just will NOT recognise the 328.
You will get error messages like 'atmega328p only supported for assembler'
if you have ubuntu 8.04 (or earlier... and other distros which have avr-gcc 4.2.x) right now you wont be able to talk to arduinos using a 328 unless you build avr-gcc 4.3.x from source or upgrade to a distro that has 4.3.x avr-gcc installed ie ubunbtu 8.10.
There are plenty of posts on this forum (and others) that describe building from source - which is my suggested solution. Dont build 4.3.0 as its known to be buggy - aim for something more recent.
Once again sorry for this duplicate info, but here in the UK it seems pretty much all the sources of arduinos right now are coming with the 328, and for quite a few people all of a sudden arduino isnt programmable.
atmega328p only supported for assembler