Two Wire Interface EEPROM Library - Suitable for 24LC256 EEPROM, available at SparkFun.
Download the library [zip archive - 57kb]
There is a lot of code on the internet for driving this kind of EEPROM, but actually none seems to handle the full 256kb array.
Here is how the 24LC256 works: you configure 3 pins on the chip to select what I call a "block", therefore, there are 8 blocks available. Each block is 32kb wide, and you can access the bytes in a block with a 14 bits address (which will be transmitted via I2C bus).
The only thing you've got to deal with is the block you want to use, and the operations (read/write).

First of all, you need to enable I2C communications with TWIPROM.begin(). Then a little configuration of your stuff is necessary:
Blocks are cool, as they are independant. When you use a block, all the others are read/write protected. Therefore, you can assign a block to a special storage task, or make a RAID system by writing the same data to 2 blocks..
If 32kb is enough for your design (or if you're running out of free pins), hard-connect A0,A1 & A2 to ground and use only block 0.
Use an unsigned int for the address. It is 15 bits long, so the maximum addressable byte is 32767.
A write cycle is 5ms long. Which means that writing the whole block using the single byte method is 2.7 seconds long. Be carefull with time-sensitive designs!