Personally what with having separate tickets so no baggage transfer (unless you find a willing UA agent which you won't know until you check in at IAH) I'd allow 4 hours because as others have said you need to clear uk immigration and customs, switch terminals avd then bag drop with BA plus allow some delay time on the UA arrival.
I might be over cautious though. And if you miss your BA flight to Milan they will likely cancel the return too which could be very expensive to buy new tickets.