Generic Repository: Am I over-complicating?
I think if you are going to have only one Repository, then yeah this is over complicated! But if you will have many Repositories and you will be adding more and more, then you are on the right track. But couple of points: 

I am not sure how your are using your UoW. From my point of view UoW should look like something like: 

interface IUnitOfWork
{
    Begin();
    End();
    Rollback();
}


And UoW should be passed to Repositories. So basically you have a UoW that couple of Repositories may use to get their job done (get/insert records for instance). From where I look at this a UoW is not specific to a single Repository and can span multiple Repositories. 

Imagine for instance that your UoW involves creating an Order entity and updating the Customer entity together. 

Also I would suggest to tighten IRepository definition to:

public interface IRepository&lt;T&gt; where T : IDomainObject


This basically is saying that repositories are not supposed to be created for any sort of class. Your Domain classes can then implement IDomainObject to satisfy this condition. IDomainObject can be empty or depending on your Domain it can have some Domain related properties.