now what you need to do is a bit "complicated" but ive done it a few times and it works.
here is what you need to do:
install bf2 via steam
run the game once
create a gamespy account
load any map in bf2 (online or offline)
make your config
install FH2
now comes the tricky part.
make a backup (rename) of the shader_client.zip file in the steam/.../Battlefield 2/mods/bf2 folder
now copy the shader_client.zip form the battlefield2/mods/fh2 folder into the Battlefield 2/mods/bf2 folder. (this is basically what the FH2.exe does but the steam version cant run & handle this so you have to do this manually)
now the following is HOW TO START FH2 on STEAM (you need to do this every time until we find a better way)
now start BF2 via steam > open the community menu > select custom games an start FH2.
Bf2 will restart with FH2 running. now you can join the servers and the shader issues should be solved.
IF you ever want to play BF2 or any other mod besides FH2 you have to restore the original shader_client.zip file in the steam/.../battlefield2/mods/bf2 folder. !!!
good luck and report back