Customise Author Page?

You will need something like this in your author.php file. Taken from the Codex.
http://codex.wordpress.org/Author_Templates

<?php get_header(); ?>

<div id="content" class="narrowcolumn">

<!-- This sets the $curauth variable -->

<?php
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
?>

<h2>About: <?php echo $curauth->nickname; ?></h2>
<dl>
    <dt>Website</dt>
    <dd><a href="https://wordpress.stackexchange.com/questions/157033/<?php echo $curauth->user_url; ?>"><?php echo $curauth->user_url; ?></a></dd>
    <dt>Profile</dt>
    <dd><?php echo $curauth->user_description; ?></dd>
</dl>

<h2>Posts by <?php echo $curauth->nickname; ?>:</h2>

<ul>
<!-- The Loop -->

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <li>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
        <?php the_title(); ?></a>,
        <?php the_time('d M Y'); ?> in <?php the_category('&');?>
    </li>

<?php endwhile; else: ?>
    <p><?php _e('No posts by this author.'); ?></p>

<?php endif; ?>

<!-- End Loop -->

</ul>

To get the profile photo you need to use the get_avatar function and use the users email as a parameter.

<?php echo get_avatar( $curauth->user_email ); ?>

More information on get_avatar here: http://codex.wordpress.org/Function_Reference/get_avatar