I’d say EE could do it, but there are a couple areas will you’ll need at least some intermediate level help and or plug-ins, extensions or modules. For example, users submitting data. I’ll assume you don’t want to let them all into the sites backend, so you’ll need to create some front end data entry forms. Solspace’s plugins and modules will help here. Solspace would also be one of the options for the second issue: ratings. EE doesn’t have a native rating system, and while you could handle it yourself, using the stand-alone data entry form instead of comments, it would be easier to handle it using one of the available ratings modules/plugins.
While, you are at it, you may also want Solspace’s Tags module. This would turn keywords into clickable links. So if you have a listing like: Products—which could be either a weblog or a category; but in this case let’s say its a weblog. Then your categories might be things like Cameras, Telephones, Books, etc. Obviously you could have subcategories, but from my perspective this is when you might want to consider something like tags. So you could on the fly add terms to a product. So for a product: Canon Powershot A500, you could use tags or keywords like 5MP, 4X Zoom, etc. Someone clicking on one of those links could then pullback other cameras at 5MP, or with 4X Zoom, etc.
Submission part you’d might want in two parts, those who are members, and those who aren’t members, possibly even changing the status of the submit based on member status. This would require some intermediate level work, but should be possible with an {if} statement.
Obviously, set-up or information architecture is fairly import for this type of thing. You don’t want to trap yourself into making things harder or more resource intensive through bad planning. So I say, plan, plan, plan and understand how that relates to EE. If you can understand the ramifications of making something a weblog versus a category you should be good.