Sachverhalt: Die 1964 geborene P._ bezog seit dem 1. Mai 1995 eine halbe Härtefall-Rente der Invalidenversicherung. Mit Verfügung vom 26. April 2000 lehnte die IV-Stelle Bern ein Revisionsgesuch ab; auf ein Zweites trat sie mit Verfügung vom 15. Januar 2002 nicht ein. Mit Verfügung vom 31. Oktober 2003 hob die IV-Stelle die bisher ausgerichtete Rente auf Ende 2003 auf. Diese Verfügung bestätigte sie mit Einspracheentscheid vom 4. Dezember 2003. Einer allfälligen Beschwerde entzog sie die aufschiebende Wirkung. P._ erhob Beschwerde gegen die Rentenaufhebung und den Entzug der aufschiebenden Wirkung. Mit Zwischenentscheid vom 7. Januar 2004 wies das Verwaltungsgericht des Kantons Bern diese vorerst bezüglich der aufschiebenden Wirkung ab. Die hiegegen eingereichte Verwaltungsgerichtsbeschwerde wies das Eidgenössische Versicherungsgericht mit Urteil vom 24. Februar 2004 ebenfalls ab. Mit Entscheid vom 21. Juni 2004 wies das Verwaltungsgericht des Kantons Bern die Beschwerde sodann auch materiell ab. P._ lässt Verwaltungsgerichtsbeschwerde führen und beantragen, es sei ihr eine ganze, eventuell eine halbe Invalidenrente zuzusprechen. Subeventuell sei die Sache zu näheren Abklärungen an die IV-Stelle zurückzuweisen. Ausserdem lässt P._ um Gewährung der unentgeltlichen Verbeiständung ersuchen. Die IV-Stelle schliesst auf Abweisung der Verwaltungsgerichtsbeschwerde, während das Bundesamt für Sozialversicherung sich nicht vernehmen lässt. 