<p>I am using a native library which returns an IntPtr to a memory location, which contains the value of an attribute.  I know what the type of the attribute is and I have a method for marshalling a value (taking the IntPtr and the type of the attribute) from the memory pointed at by the pointer.  This method either calls Marshal.ReadInt32, or reads a series of bytes and converts them to a double, or reads a string with Marshal.PtrToStringUni etc etc.  I would like to write some unit tests for this method but am not sure how I go about creating the IntPtr to pass to the method.  I'm using NUnit and cannot use a mocking framework.</p>

If I understood correctly, you want to unit-test your logic of deserializing, given an IntPtr.
If that is the case, all you have to do is have copies of the different combinations of serialized output to test each unique path. For each test, obtain the IntPtr to a possible serialized entity, call your method and verify expected results.
Something like obtaining pointers to an area in memory. Hold the serialized output in a string and obtain an Intptr from it.  GCHandle looks like something you need here. (never tried this though)
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.gchandle.tointptr.aspx