I'm using Eclimd for completion. it generates a lot of helpful info about function, but in 1-line preview window it looks messy. (same window uses by omni-completion)
So:
I am facing problems with 'previewheight' too so I came up with the following work around:
set previewheight=50
au BufEnter ?* call PreviewHeightWorkAround()
func PreviewHeightWorkAround()
if &previewwindow
exec 'setlocal winheight='.&previewheight
endif
endfunc