When I've been serious about testing I'll usually:
1. Hack in what I want in some exploratory way
2. Write good tests
3. Delete my hacks from step 1, and ensure all my new tests now fail
4. Re-implement what I hacked together in step 1
5. Ensure all tests pass
This allows you to explore while still retaining the benefits of TDD.