Ahora empezamos con el código php verificando que la variable submit se encuentre en el arreglo de $_POST. Esto es debido a que el resultado y el formulario se encuentran en la misma página.

if(isset($_POST['submit'])){

Si el número es mayor a 0, hubo un problema y hay que abortar.
Si queremos restringir la carga sólo a imágenes podemos verificar si el archivo es una imagen.
if(getimagesize($_FILES['archivo']['tmp_name']))

También podemos restringir la extensión del archivo, para evitar que el usuario suba un archivo que no debe.
if($_FILES['archivo']['type'] == 'image/png')

También podemos especificar el tamaño máximo de bytes que puede tener un archivo
// 500kb
if($_FILES['archivo']['size'] < 500000)

Ahora ya podríamos guardar el archivo. Pero como varios usuarios subiran archivos, tenemos que evitar que haya conflicto de nombre, es por eso que necesitamos guardarlo con un nombre único. Utilizamos la función move_uploaded_file() para guardar en una carpeta del servidor el archivo que se subió.
$fecha=new DateTime();
if(move_uploaded_file($_FILES['archivo']['tmp_name'], 
                      'imagenes/' . $fecha->format('YmdHis') . $_FILES['archivo']['name']))

Código completo
<?php
    if(isset($_POST['submit'])){

        if(!$_FILES['archivo']['error'] > 0) {

            if(getimagesize($_FILES['archivo']['tmp_name'])) {

                if($_FILES['archivo']['type'] == 'image/png') {

                    if($_FILES['archivo']['size'] < 500000) {

                        $fecha=new DateTime();
                        if(move_uploaded_file($_FILES['archivo']['tmp_name'], 
                                              'imagenes/' . $fecha->format('YmdHis') . $_FILES['archivo']['name'])) {
                            echo "<p>La imagen se guardó con exito.</p>";
                        } else {
                            echo "<p>No pudo guardarse el archivo.</p>";
                        }
                    } else {
                        echo "<p>La imagen no debe ser superior a 500Kb.</p>";
                    }
                } else {
                    echo "<p>El formato de la imagen debe ser PNG.</p>";
                }
            } else {
                echo "<p>No estás subiendo una imagen.</p>";
            }
        } else {
            echo "<p>Ocurrió un error mientras se subía el archivo.</p>";
        }
    }
?>

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8">
    <title>Upload</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <form action="" method="post" enctype="multipart/form-data">
        Archivo:
        <input type="file" name="archivo">
        <br>
        <input type="submit" value="Subir archivo" name="submit">
    </form>
</body>

</html>