First, (almost) never use a bare except statement. You will catch exceptions you can't or don't want to handle (like SystemExit). At the very least, use except Exception.
Second, your except block implies you only want to handle the ValueError that int(num) might raise. Catch that, and nothing else.
Third, the code that compares x to smallest and largest is independent of the ValueError handling, so move that out of the try block to after the try/except statement.
smallest = None
largest = None
num = "not done" # Initialize num to avoid an explicit break
while num != "done":
num = raw_input("Enter a number: ")
try:
x = int(num)
except:
print "Invalid input"
continue
if smallest is None:
smallest = x
if largest is None:
largest = x
if x < smallest:
smallest = x
elif x > largest:
largest = x
print "Maximum is", largest
print "Minimum is", smallest
Note that you can't fold the None checks into the if/elif statement, because if the user only enters one number, you need to make sure that both smallest and largest are set to that number. After the first number is entered, there is no case where a single number will update both smallest and largest, so if/elif is valid.
smallestand/orlargestare stillNone.Noneis smaller than any other number. In Python 3, comparing an integer toNonecauses an error.