Excellent, thanks for all the ideas guys.
I like Berthenk's UI idea, perhaps with the ability to scroll up or down multiple rows to sort them into categories.
As for Zip files, I don't think I'll have too much problem with. If I can't find any premade zip libraries I should be able to just make my own (never made a zip library before, but I've worked on other compression formats before). 7z and RAR on the other hand might be difficult, primarily because I'm not sure what documentation is available on the specification. I've got a seven zip library I use in C# which handles zip, rar and 7z, but I'm not sure if they have made one for C, I'll look into it.
As for the server ideas, I was half planning on setting up my own host for the server, but if the GBATemp guys would be willing it would certainly make my life easier. For the general usability, my plan was to do something similar to homebrew browser. When the program boots it will check it's database is up to date, if not it will update it's own database of images and descriptions (to minimise lag while browsing). Obviously, all of the files will need to be added manually so I was thinking of making a simple PHP admin type system for selected volunteers (I wouldn't want to make it completely open) to be able to add and modify it's database of homebrew. For the installing I'll write a simple script language to allow the contributors to design how a program is installed.
If GBATemp are willing to host something like this, we could perhaps repackage the homebrew into zip files (meaning I'd only have to write one library) and store them on a server seperate to filetrip. I'm not sure what to do otherwise just yet.
Spinal_Cord: If you're willing to make the UI, since you're skills at that far surpass my own, then that would be great. I don'tmind working on the Wifi, server, extracting, installing etc stuff. I was planning on making this both a launcher and downloader, so two UIs would be great. That one you posted could be used for downloading, and Berthenk's idea could be used for launching maybe.
-edit-
Would you also be willing to work in libnds? (I noticed in your other thread you use PALib) I suppose if you want to use PALib I could set it up on my end and use that for the other things (not used PALib before).