I attach a patch which implements vertical display of completion candidates for icomplete. I've been using it for a few months, and did find any bugs. It is minimal (less than ten lines of "real" code), and unlike other "icomplete vertical" implementations, the number of displayed completion candidates depends on the "max-mini-window-height" variable, which means that it is the Emacs display engine which decides the number of completion candidates that is displayed, depending on the available space in the frame at the moment the minibuffer is entered.