One way to solve this problem is creating a dummy ASP.NET page that simply uses Response.BinaryWrite() to output the binary field brought by the DB query, as is explained in an ASP Alliance article. However, you don't get encapsulation and reusability, having to resort to copy/paste as new projects need such a feature. The most elegant solution is outlined in my recent post at http://weblogs.asp.net/cazzu/, and involves a custom IHttpHandler that serves these binary resources.
This was first published in September 2003