I concur on the GUI of Zabbix. In the interest of fairness I should probably mention I only ran it briefly as I was evaluating various options and probably didn't spend enough time with it.
I kinda liked nxmc, but it had its own niggles.
I've always ended up falling back to cacti for some reason probably because its graphing just works and graphs are useful for trends/history.
For me the ideal solution would be fully modular. Both for collecting/monitoring and for GUI/alerting.
I prefer to be able to store at least few months worth of statistics online (for pro-active monitoring/trending).
Alerting should be very flexible. Ideally it would also have some idea of topology so that of a switch goes down you don't necessarily (unless you want to) get alerts for every device connected to it. Alerts should also have the ability to auto-escalate (for example, mail->sms->sms-to-alt-number->sms-to-group-of-numbers).
Obviously it needs to do SNMP (both collecting and act as trap receiver.
Ideally it should work with or without an agent on target host (and if it does agent it should be possible to either push or pull).
Oh and don't want it to be written in Java either.
Then you start getting to niceties/fluff like maybe an Android app for lightweight dashboard/alarm panel.
To be fair there are quite a few open source solutions that come close for most parts.