You're using this forum with an iPhone? God bless you... Been there, never doing it again. :)
The issue, from what I can see, is triggered by ImageGalleryPage::checkFolder(). This function is responsible for ensuring that a root folder is assigned for the ImageGalleryPage. So if you have an ImageGalleryPage named "My Gallery", this function ensures that "/assets/image-gallery/my-gallery" exists.
Based on the trace, it looks like $this->RootFolderID is passing true, so the function skips to the part where it sets the name of the folder (in case you've changed the title of your ImageGalleryPage.
We know that RootFolder() is returning a valid record because otherwise, we'd have a non-object error when invoking the method setName().
Where it fails is within the Folder object, when it tries to write to the filesystem to make sure that the actual path is in alignment with the filename in the database record. The rename() function is complaining that the original path doesn't exist.
So my question to you would be, can you check the record in the File table that corresponds with the RootFolderID field of your ImageGalleryPage, check the Filename field on that record, and check if it, in fact, does or does not exist in the filesystem?
If not, I think you need to sync your filesystem. I believe the way you do that in 2.4 is by clicking the "look for new files" button in AssetAdmin.
Give that a try and let me know how you do.
Silverstripe tips, tutorials, screencasts, and more. http://www.leftandmain.com