As you already have figured out, you need to implement custom IDataReader. As your source is Dictionary - only few relatively simple method/properties such as int FieldCount, bool Read(), object Get(int i) should be implemented.
You may find useful examples (a simple one) of custom IDataReader implementations by googling sqlbulkcopy custom idatareader.
Also keep in mind that SqlBulkCopy ignores triggers, foreign keys and other constraints and is not able to handle exceptions.