You are removing only the ".csv" extension. So if your file name is "file(1).csv", it will become "file(1)" + "(2)" + ".csv" = "file(1)(2).csv".
To avoid this, you must split the name into plain name, clasped count, and extension. Then use the incremented count to build the new name.
Possible solutions are using a regular expression, or locating the open and closing parentheses, getting the number in between and removing that part.
Another solution would be getting the plain name outside the loop and using that to build the name:
if (File.Exists(destFile))
{
int n = 0;
string plainName = destFile.Remove(destFile.Length - 4);
string newName;
do
{
n++;
newName = string.Format("{0}({1}){2}", plainName, n, ".csv");
}
while (File.Exists(newName));
}