upgrading the memory is fairly easy...visit kingston, crucial websites and use the configurators to tell u what memory to buy (around 50-100 bucks) depending how much memory u want and if u want 512 or 256 sticks
to upgrade hard drive....i'm not sure if u want to dual boot win and linux or if u want to keep the current 40gb...if not then u can do a fresh install of win. or linux on a new hd (around 60 bucks)
for gfx card, i would recommend getting a vanilla 6800 which should cost around $200.