Enigmail will use the gpg-agent for passphrase handling if any of the following conditions are fulfilled:
If you are using GnuPG version 1.4.x, and call the GnuPG executable with the parameter --use-agent, the usual cause is that the environment variable GPG_AGENT_INFO is set.
If the variable is set by your Linux/Unix distribution, but you don't want to use gpg-agent, you can unset the variable e.g. in the file .xsession or .bashrc, or you can launch your mailclient through a wrapper shell script like this one:
#!/bin/sh
unset GPG_AGENT_INFO
exec /path/to/your/mailclient "$@"
An alternative solution if you don't want gpg-agent is to correctly install all helper utilities.
gpg-agent needs the pinentry tool to query for the password; if it's not available, then you need to install it. For Linux, you have the choice between pinentry-qt and pinentry-gtk. Install either of them, and create a link from it to pinentry.