Sort of a spinoff of this question. Do you keep them in the source tree? Do you keep them in source control?
I'm thinking that if your test cases refer to files, then the files are part of the behavior specification of the system, therefore they're associated with the current version of the system, therefore they should be checked into source control. But I don't think they should be checked out locally, because they don't need to be, and they can potentially be quite large. So I'm leaning towards having a parallel tree, such that if a project's code files are at $svn/Code/foo/bar/baz, the associated test data files are in $svn/TestData/foo/bar/baz, and the latter will be accessed directly from the server using some kind of common test data helper class (which maybe caches files locally?), which can just accept relative paths and figure out where to find them. Does this make sense?
I guess there's the related question of how extensively I should be using external files for testing in the first place. I do think they're often good for higher-level "acceptance" tests.