Index: django/forms/fields.py
===================================================================
--- django/forms/fields.py	(revision 11690)
+++ django/forms/fields.py	(working copy)
@@ -249,6 +249,10 @@
         except DecimalException:
             raise ValidationError(self.error_messages['invalid'])
 
+        # value != value => NaN is never equal to itself, all other decimals are.
+        if value != value or value == Decimal("Inf") or value == Decimal("-Inf"):
+            raise ValidationError(self.error_messages['invalid'])
+        
         sign, digittuple, exponent = value.as_tuple()
         decimals = abs(exponent)
         # digittuple doesn't include any leading zeros.
Index: tests/regressiontests/forms/fields.py
===================================================================
--- tests/regressiontests/forms/fields.py	(revision 11690)
+++ tests/regressiontests/forms/fields.py	(working copy)
@@ -320,6 +320,18 @@
 True
 >>> f.clean(Decimal('3.14')) == Decimal("3.14")
 True
+>>> f.clean('NaN')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a number.']
+>>> f.clean('Inf')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a number.']
+>>> f.clean('-Inf')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a number.']
 >>> f.clean('a')
 Traceback (most recent call last):
 ...
