1. flash the device again with the modem image (download the firmware of your device from samfirmwares.com, delete everything from the .tar file except modem.bin, and then flash this file to the phone with Odin (you can get Odin and instructions from that site too)

2. maybe your nv_data.bin file or /efs directory got corrupted, make a backup of the folder, then simply delete nv_data.bin, it will be recreated for you on Galaxy S.

For this, you’ll need root. If you have a root-enabled kernel, like the Voodoo lagfix kernel, you only have to install the Superuser app and Busybox on the phone, download the Android SDK to your PC, install platform-tools in the SDK manager, go to the platform-tools directory and start adb shell.

In the shell, type su, wait for the Superuser prompt to appear on the phone (if it does not appear, open the Superuser app and try executing su again), enable root access for the command. Now go to /efs, copy everything to for example /sdcard/efs, then rm nv_data.bin.

Reflashing the device with a kernel and checking “phone EFS clear” in Odin also works (make sure you made a backup of the EFS folder just in case).

3. you can try changing the CSC (to XEU for Europe): enter *#272*imei# on the phone tab. Note: this will reset your phone to factory settings, so make sure you did a clockworkmod backup before this. Incorrect CSC setting may cause MMS not working also.