Копирование файлов осуществляется в режиме кэширования т.е. через диспетчер памяти, последовательно считывается в память фрагментами и фрагментами записывается в файл, но есть еще асинхронное упреждающее чтение так же через диспетчер памяти, т.е. источник файл считывается в память, а программа записи записывает данные из памяти чуть с запозданием. В XP окно проводника закрывалось когда последний блок попадал в память, а запись на диск уже была в фоне. Механизм через кэширование хорош тем что в случае при сбое данного фрагмента на винте его легко восстановить из памяти.
В windows 7 и vista не много по другому, все зависит от размера копируемого файла, т.е. размер используемого фрагмента меняется и возможно копирование без кэширования, так же стремление делать операции чтения и записи одновременно (актуально при копировании между разными дисками или системами) и т.д. ну и многое еще чего. Можно использовать программу ProcMon Ссылка после ее запуска начните копировать на flash, потом переключитесь в ProcMon и через поиск найдите первое упоминание имени файла которое вы копируете и посмотрите что происходит в момент зависания.