You can build an array of all post items, and then sort them by date at the end of your querying:
$blogs = get_blogs_of_user( get_current_user_id() );
if ( $blogs ) {
$items = array();
foreach ( $blogs as $blog ) {
switch_to_blog( $blog->userblog_id );
$posts = get_posts( 'posts_per_page=2' );
foreach ( $posts as $post ) {
// Use the timestamp to sort all posts by later.
$timestamp = strtotime( $post->post_date_gmt );
// Just in case another published at *exactly* same time.
while ( isset( $items[ $timestamp ] ) )
$timestamp++;
// Add our HTML for this post to the stack.
// You can't store the post object and work on it later as we'll be outside the scope of this particular blog.
$items[ $timestamp ] = sprintf( '<li><a href="https://wordpress.stackexchange.com/questions/138272/%s">%s</a></li>', get_permalink( $post->ID ), get_the_title( $post->ID ) );
}
}
restore_current_blog();
if ( $items ) {
// Sort by latest to oldest.
krsort( $items );
// Display!
echo '<ul>';
echo implode( "\n", $items );
echo '</ul>';
}
}