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