The absolute minimum is ASP.NET 2.0, a text editor, a compiler, and makecab.exe.
SharePoint web parts inherit from System.Web.UI.WebControls.WebParts.WebPart, so as long as you don't need to access the SharePoint API, you can create the class and associated XML files using any configuration that has the .NET runtime.
However, you'll probably want to use Visual Studio. Many recommend WSPBuilder, but I use a customized version of STSDEV that will work on my Windows XP laptop. Visual Studio helps with the writing of the code, while WSPBuilder or STSDEV help with the creation of the supporting XML files and the WSP solution package file.
If you need to use the SharePoint API, you can copy the necessary DLLs from a server with SharePoint installed. Place the DLLs locally and then add them to your project references.
You will not be able to debug the web part if it calls the SharePoint API. Personally, I'd rather be able to use my computer than having debugging. In place of debugging, I use logging. While developing, I create an Announcements list named Log and write anything I want logged into that list.