As a business analyst I use
(a) Interviews,
(d) Storyboards
(e) GUI Mock ups,
Descriptive Documents,
Activity Diagrams,
Prototypes
and white boarding
to elicit requirements.
I think the real key is to make sure requirement elicitation is ALWAYS collaborative and iterative.
DO NOT dictate requirements to the
user or try to gather requirements
that are not there (in fact
requirement gathering in itself is a
misnomer - you cant gather that which
does not exist.)
Confirm things early and often and
check in as much as possible.
Make peace with that fact that you
will never get 100% of all the
requirements on LARGE projects but if
you are good you can get 100% of the
MISSION Critical requirements.
Make sure that the whole team is
involved (IT, Business, Support) and
has a clear interest and stake - if
someone critical doesnt care or has
no responsibility - things will fail.