I wrote a package for escaping data for COPY FROM [1].  Unfortunately, integration with ToField is problematic, since the Plain constructor has no corresponding COPY representation (a Plain can contain an expression).

Also, threadWaitWrite doesn't work on Windows, so it needs a mingw32_HOST_OS guard too.

 [1]: http://hackage.haskell.org/package/postgresql-copy-escape