set post author depending on condition via frontend post submit

The wp_insert_post_data filter is the right approach. I would do something like this:

add_filter( 'wp_insert_post_data', 'some_handler' );

function some_handler( $data )//$data is an array of sanitized post data
{

 //do some conditional checking...
 if ( ! isset( $_POST ) ) {//the request to insert post data wasn't done by a user

  return $data;
 }

 //don't bother doing anything to any post type other than 'post'    
 if ( $data['post_type'] != 'post' ) {

  return $data;
 }
 //there probably needs to be a bunch of other conditional checks made...
 //but after that, check for which author is posting:
 if ( $data['post_author'] == 19 ) {

  return $data;
 } else {

  $data['post_author'] = 20;
  return $data;
 }
}