I've run your code - you miss the file extension while creating file name (you should consider that it can be jpg, png, or other image). My working code (copying fragment) looks like this:
photoFilename = @"" + i.ToString() + p.Name.Substring(p.Name.LastIndexOf('.'));
if (storage.FileExists(_photoPath + @"\" + _photoFilename))
{
storage.DeleteFile(_photoPath + @"\" + _photoFilename);
}
using (IsolatedStorageFileStream file = storage.CreateFile(_photoPath + @"\" + _photoFilename))
p.GetImage().CopyTo(file);