This SO post discusses the same issue, though I'm not sure all the items listed create direct traffic:
https://stackoverflow.com/questions/7537282/what-really-makes-up-direct-traffic-in-google-analytics
Any visits which do not come from a browser will appear as direct, e.g clicks on links in:
- email clients
- some webmail sites
- skype or other IM apps.
- facebook clients
- twitter clients
- mobile apps
- documents
- SMS
Other possible causes are:
- javascript enabled spiders
- 302 redirects
- links from https sites to http sites (see more details below).
- links from iframes in some circumstances.
- clicks on javascript links in IE (might only be older versions)
- flash links in IE (might only be older versions)
- right clicks on webkit links (might only be certain browser versions)
- pages missing GA tracking
Many of the above are from the list here: http://www.webtrendsoutsider.com/2008/reasons-for-direct-traffic-in-referrers-reports/
Also note (see wikipedia) that if a website is accessed from a HTTP Secure (HTTPS) connection and a link points to anywhere except another secure location, then the referer field is not sent.
So a site like encrypted.google.com doesn't pass on referral data, and also appears as a direct source. However, although logged in google users use ssl, google passes on all referral data except the search term.
So if you think you may have visitors from the above, then try tagging links which might appear in such places with campaign parameters. This page tells you how:
http://support.google.com/analytics/bin/answer.py?hl=en&answer=1033863
The campaign tags correspond directly with google analytics fields such as source, medium and keyword, so tagging links with these parameters will ensure visitors from non-browser sources retain the correct source and medium data.