Looks pretty legit. If you're going to make the Gallery_subcat_id on the gallery_subcat table an autoincrement or globally unique integer then you won't have to have the gallery_id on the gallery_images as well. Won't really make much of a difference except one less field to list on your joins and such, but will lead to higher subcat_id's.
I would probably keep it the way you have it though, because it'll be much easier to delete an entire gallery with the gallery_id at every level.
I'm no DB structure expert but I've worked with a SQL server daily for the last 3 years, lol. I think you'll be alright with what you have there.
Oh, actually, you said that the folder is based on the sub category name, so why don't you store the folder name at the subcat level instead of the image level?