perl, 126 bytes
====

reads stdin, outputs to stdout

    print map{$l=length()/2%3;[A..Z,a..z,0..9,"+","/"]b".substr$_.0 x4,0,6],$l?"="x(3-$l):""if$_}unpack("B*",join"",<>)=~/.{1,6}/g

ungolfed:

    my @x = ('A'..'Z','a'..'z',0..9,'+','/');
    my $in = join '', <>;
    my $bits = unpack 'B*', $in;
    my @six_bit_groups = $bits =~ /.{1,6}/g;
    for my $sixbits (@six_bit_groups) {
      next unless defined $sixbits;
      $l=length($sixbits)/2%3;
      my $zero_padded = $sixbits . ( "0" x 4 );
      my $padded_bits = substr( $zero_padded, 0, 6 );
      my $six_bit_int = oct "0b" . $padded_bits;
      print $x[$six_bit_int];
      print "=" x (3 - $l)  if  $l;
    }