Well like I said its pretty tricky, but ye its mostly done in PS.
But ye, calculate how much your moving your heightmap by, with pixels over the size of the terrain, then stiching up all your colour and detail together you can either do by hand or using this program:
Graphic Reality : BF2 Mod Toolkit
Then move them by the same amount, working how many pixels for the amount of meters based on the total size of the image and the size of the terrain etc, then once moved all of them, you will want to fill in the missing area but since its sand and it shouldn't actually be complied ingame, you can just get away with clone stamping some sand or w/e, then using BF2 Tsplit.exe you can then split your colour and detail back into the map.
Then comes moving all your statics, which you can either do by hand in the editor by selecting all the statics, with the last static in the selection having a 0deg rotation, then moving all the statics down south to match where they were before, or you can do it with 3DsMax to move them all by a precise amount, by importing all the statics into max using the LM scripts, selecting all statics, then moving them all with an offset x,y,z by the amount you moved the terrain (thought dest objects may not get counted, but should providing you don't delete there helpers), then save a new staticobjects.con based on the objects in max using the LM script and done
