Since this particular image doesn't have a clean linear transition (like a horizon running across the entire image), an ND filter wouldn't have done much good. (Also probably why you weren't satisfied with the results of the (linear) gradient.)
The easiest way I know to create a mask for an image like this is to turn the image to grayscale, play with the brightness/contrast (and maybe the shadows/highlights), and then use that as a mask. Or at least a starting point for a mask.
Then reopen the image in color, add your mask, and tweak until you're happy with the results.
HTH - Mark
{edit}Argh, tired of trying to get SkyDrive to work here. Let's try DropBox instead...
Quick and dirty edit...
Zipped Photoshop file is
here.
WARNING: 2.6 MB file!
As you can see, I converted the middle image to grayscale and played with b/c and s/h as noted above. Then I opened a new color psd and copy/pasted the dark and bright images onto their own layers, and the edited grayscale middle image into channel Alpha 1.
Then, to soften the edges a little, I loaded Alpha 1 as a selection, inverted the selection, contracted it by 2 pixels, feathered it by 4 pixels, and filled the selection with white in Alpha 2.
Finally, I added a mask to the top (bright) layer, and c/p Alpha 2 into the Layer 2 Mask channel.
The waves near the shore need work, and there are still some bright halos (particularly around the branches) but it's not bad for 5 minutes of work. And you can continue to touch it up as time allows.
{/edit}